数千万件のレコードを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 マインドマップ スタイルの例

推薦する

純粋な CSS3+DIV で小さな三角形の境界線効果を実現するためのサンプル コード

具体的なコードは次のとおりです。 HTMLコードは次のとおりです <div class=&qu...

Vue コンポーネントの切り替え、動的コ​​ンポーネント、コンポーネントのキャッシュについて

目次1. コンポーネント切り替え方式方法1: v-ifとv-elseを使用する方法 2: 組み込みコ...

ウェブページ作成時のHTMLタグの使用に注意してください

HTML はプレゼンテーションからコンテンツへの移行を試みており、コンテンツの意味(HTML) とプ...

MySql 学習ノートにおけるトランザクション分離レベルの詳細な説明

背景トランザクションについて話すとき、誰もがそれに精通している必要があります。MySQL データベー...

最新の仮想マシン VMware 14 インストール チュートリアル

まず、VMware 14のアクティベーションコードをお渡ししますFF31K-AHZD1-H8ETZ-...

MySQL 8.0.20 圧縮版のインストールチュートリアル(画像とテキスト付き)

1. MySQL ダウンロード アドレス。 http://ftp.ntu.edu.tw/MySQL...

mysql における mydumper と mysqldump の比較

いくつかのテーブルまたは単一のデータベースのみをバックアップする場合は、innobackup よりも...

Node.js+expressメッセージボード機能実装例

目次メッセージボード必要なライブラリオープンソースプロジェクトプロジェクト構造メッセージボードnod...

Centos8.3、dockerデプロイメントspringbootプロジェクトの実際のケース分析

導入現在、k8s は非常に人気があり、それについて学ぶために本を購入しました。しかし、k8s では数...

Linux システム Docker への ASP.NET Core アプリケーションのデプロイのプロセス分析

目次1. システム環境2. 運用プロセスと途中で遭遇した問題1. システム環境1. Tencent ...

WeChatアプレットがチャットルーム機能を実現

この記事では、参考のために、WeChatアプレットのチャットルームを実装するための具体的なコードを例...

Vue のプラグインとコンポーネントの違いと使い方のまとめ

このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DEL...

Vscode が Ubuntu にリモート接続する際のエラー問題の解決方法

1. 事件の背景:仕事上、Ubuntu への vscode リモート接続を使用する必要があります。 ...

MySQL の集計関数 count の使用法とパフォーマンスの最適化テクニック

この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...

画像の半透明処理 画像と半透明の背景の実装のアイデアとコード

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...