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

推薦する

CSSは高度に適応したフルスクリーンを実現します

独自のデモを作成するときに、display:flex を使用して垂直方向の中央揃えを実現したいと思い...

位置のいくつかの巧妙な応用の詳細な説明:sticky スティッキーポジショニング

背景: position:sticky はスティッキー配置とも呼ばれます。スティッキー配置の要素は、...

MySQL のデフォルトのストレージ エンジンを変更する方法

mysql ストレージ エンジン: MySQL サーバーはモジュール スタイルを採用しており、特にス...

Docker を使用して Jenkins をインストールするためのサンプル コード

Dockerコンテナのインストール時に遭遇しやすい2つの問題1.ポートはすでに割り当てられています(...

nginx共有メモリの仕組みの詳細な説明

Nginx の共有メモリは、高いパフォーマンスを実現できる主な理由の 1 つであり、主にファイル キ...

MySQL のデータの偶発的な削除の解決策と kill ステートメントの原則

mysql が誤ってデータを削除しました削除ステートメントを使用して誤ってデータ行を削除する誤ってデ...

Linux は suid vim.basic ファイルを使用して権限昇格を実現します。

カリで再現まず、必要なvim.basicファイルにsuid権限を設定します。 chmod u+s /...

MySQLクエリ速度が遅く、パフォーマンスが低下する原因と解決策

1. データベースクエリの速度に影響を与えるものは何ですか? 1.1 データベースクエリ速度に影響を...

SSL で Nginx リバース プロキシを構成する簡単な手順

序文リバース プロキシは、Web 経由で行われたリクエスト (http と https の両方) を...

jQueryはアコーディオン効果を実装します

この記事では、アコーディオンを実装するためのjQueryの具体的なコードを参考までに紹介します。具体...

虫眼鏡効果を実現するJavaScript

この記事では、虫眼鏡効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。...

docker-maven-plugin の詳細な使用方法

目次Docker-Maven-プラグインMavenプラグインの自動デプロイメント手順1. ホストマシ...

Vueプロジェクトでパラメータジャンプ機能を実装する

ページの説明:​ メインページ: 名前 —> shishengzuotanhuichaxun ...

Mac で Docker を使用して Oracle をデプロイする方法

Mac で Docker を使用して Oracle をデプロイする方法まずdockerをインストール...

Web開発でボックスを中央に配置するいくつかの方法

1. ボックスを中央に配置するいくつかの方法を記録します。 1.0、マージン幅固定、高さ中央配置。 ...