数千万件のレコードをMySQLに素早く挿入する方法に関する実践的なチュートリアル

数千万件のレコードをMySQLに素早く挿入する方法に関する実践的なチュートリアル

1. データベースを作成する

2. テーブルを作成する

1. deptテーブルを作成する

テーブル「dept」を作成します(
 `id` int(11) NULLではない、
 `deptno` mediumint(9) デフォルト NULL,
 `dname` varchar(20) デフォルト NULL,
 `loc` varchar(13) デフォルト NULL,
 主キー (`id`)
)ENGINE=InnoDB デフォルト文字セット=utf8;

2. empテーブルを作成する

テーブル `emp` を作成します (
 `id` int(11) NULLではない、
 `empon` mediumint(9) デフォルト NULL コメント 'Number',
 `ename` varchar(20) デフォルト NULL,
 `job` varchar(9) デフォルト NULL,
 `mgr` mediumint(9) デフォルト NULL コメント '上位番号',
 `hirdate` datetime DEFAULT NULL COMMENT 'ジョブ開始時刻',
 `sal` 小数点(7,2) デフォルト NULL コメント '給与',
 `comm` 小数点(7,2) デフォルト NULL コメント '配当',
 `deptno` mediumint(9) デフォルト NULL コメント '部門番号',
 主キー (`id`)
)ENGINE=InnoDB デフォルト文字セット=utf8;

3. パラメータを設定する

'log_bin_trust_function_creators' のような変数を表示します。

デフォルトではオフです。1 に設定する必要があります。 mediumintフィールド作成関数がテーブルに設定されているため、エラーが発生する可能性があります

グローバル log_bin_trust_function_creators=1 を設定します。

4. 関数を作成する

1. ランダムな文字列を生成する

区切り文字 $
CREATE FUNCTION RAND_STR(n INT) は VARCHAR(255) を返します。
始める
 chars_str VARCHAR(100) をデフォルト 'abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ' として宣言します。 
	 return_str VARCHAR(255) DEFAULT '' を宣言します。
 i INT DEFAULT 0 を宣言します。
	 しながら、 
	 return_str = COUCAT(return_str、SUBSTRING(chars_str、FLOOR(1+RAND()*52)、1)); を設定します。
	 i= i+1 を設定します。
 終了しながら;
	 戻り値 return_str;
終了 $

2. 部門番号をランダムに生成する

区切り文字 $
CREATE FUNCTION RAND_num() は INT(5) を返します。
始める
 i INT DEFAULT 0 を宣言します。 
	 i = FLOOR(100+RAND()*10)を設定します。
	 i を返します。
終了 $

5. ストアドプロシージャを作成する

1. emp テーブル ストアド プロシージャ

区切り文字 $
CREATE PROCEDURE insert_emp(IN START INT(10),IN max_num INT(10))
始める
  i INT DEFAULT 0 を宣言します。
		自動コミットを 0 に設定します。
		繰り返し #繰り返し SET i = i + 1;
		emp(empon,ename,job,mgr,hiredate,sal,comm,depton) に値 ((START+i),RAND_STR(6),'SALESMAN',0001,CURDATE(),2000,400,RAND_num()); を挿入します。
	 i = max_numになるまで
 繰り返し終了;
	 専念;
終了 $

2.deptテーブルのストアドプロシージャ

区切り文字 $
CREATE PROCEDURE insert_dept(IN START INT(10), IN max_num INT(10))
始める
  i INT DEFAULT 0 を宣言します。
		自動コミットを 0 に設定します。
		繰り返し #繰り返し SET i = i + 1;
		dept(deptno,dname,loc) に値 ((START+i),RAND_STR(10),RAND_STR(8)) を挿入します。
	 i = max_numになるまで
 繰り返し終了;
	 専念;
終了 $

6. 実行

1. まず10のルールを実行する

このエラーは小さな落とし穴です。見つけましたか? 前にも残しました。プロンプトに従って確認してください。

実行に成功しました!

2. データを表示する

ハイライトはここ! 賭けてみて、失敗するかどうか見てみましょう。

3. 100万回の挿入を実行する

insert_dept(10001,1000000)を呼び出します。

100 万のデータを実行するのに 400 秒かかり、1 秒あたり 2500 です。私の設定が悪すぎます。前回のテストは 1 秒あたり 10,000 で、最高は 1 回の実行あたり 500,000 でした。

オークスリーピング

要約する

これで、Mysql に数千万のデータをすばやく挿入する方法に関するこの記事は終了です。Mysql に数千万のデータを挿入する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL に大量のデータを挿入する 4 つの方法の例
  • MySQLに何百万ものテストデータを素早く挿入する方法
  • MySql で 1 つのテーブルから別のテーブルにデータを挿入するための実装コード
  • 1 つの MySQL ステートメントで複数のレコードを挿入する
  • データがmysqlに存在しない場合は新しいデータを挿入し、そうでない場合は実装メソッドを更新します。
  • MySQL にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法
  • MySQLデータベースの挿入速度と読み取り速度の調整記録
  • MYSQL バッチ挿入データ実装コード
  • MySQLのヒント: データの挿入(レコードの追加)の速度を上げる
  • MySQLは一度に複数のデータをテーブルに挿入します

<<:  HTML iframe 使用状況の概要の収集

>>:  純粋な CSS3 マインドマップ スタイルの例

推薦する

JavaScript 基礎シリーズ: 関数とメソッド

目次1. 関数とメソッドの違い2. 良い関数の書き方2.1 正確な命名2.1.1 関数の命名2.1....

VSCode の Remote-SSH を使用して Linux に接続し、リモート開発を行う

Remote-SSHをインストールして設定するまず VSCode を開き、拡張機能を見つけて、Rem...

uni-appのスタイルの詳細な説明

目次uni-app のスタイル要約するuni-app のスタイルsassプラグインは公式ウェブサイト...

Tomcat 初回展開 Web プロジェクト プロセス図

独自のWebプロジェクトをtomcatディレクトリの下のwebappsディレクトリに配置します。 R...

HTML DOM入門_PowerNode Javaアカデミー

DOMとは何ですか? JavaScript を使用すると、HTML ドキュメント全体を再構築できます...

LinuxはRsync+Inotifyを使用してローカルとリモートのデータのリアルタイム同期を実現します。

0x0 テスト環境本社本番サーバーと支社バックアップサーバーはリモートデータバックアップが必要です...

MySQL ベストプラクティス: パーティションテーブルの基本タイプ

MySQL パーティションテーブルの概要MySQL の人気が高まるにつれて、MySQL に保存される...

JDBC を使用して Mysql データベースに接続する際に発生する可能性のある問題の概要

まず、いくつかの概念を明確にします。 JDBC: Javaデータベース接続、Oricalによって規定...

JavaScript Domはカルーセルの原理と例を実装します

カルーセルを作りたい場合、まずその原理を理解する必要があります。画像を右から左にスライドさせるにはど...

vue.js 動的コンポーネントの詳細な説明

:動的コンポーネントv-bind:is="component name" を使用...

Dockerリンクはコンテナの相互接続を実現します

目次1.1. IP経由のコンテナ間のネットワークアクセス1.2. コンテナ名またはコンテナIDによる...

Chrome Dev Tools を使用してページのパフォーマンスを分析する方法 (フロントエンドのパフォーマンス最適化)

背景開発やデバッグには Chrome Dev Tools がよく使用されますが、ページのパフォーマン...

Linux プロセスの CPU 使用率が 700% に達し、終了できない場合の解決策

目次1. 問題の発見2. プロセスの詳細情報を表示する3. 解決策4. 大法を再開する1. 問題の発...

jsonファイルの書き方の詳細説明

目次JSONとはなぜこの技術なのでしょうか? JSONの使い方- データ形式- メモ- JSには2つ...

Dockerを使用してMySQL 8.0をデプロイする方法の例

1. 公式サイトを参照してdockerをインストールする2. MySQLイメージをプルします(デフォ...