MySQLループは数千万のデータを挿入する

MySQLループは数千万のデータを挿入する

1. テストテーブルを作成する

テーブル `mysql_genarate` を作成します (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `uuid` varchar(50) デフォルト NULL,
 主キー (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5999001 デフォルト CHARSET=utf8;

2. ループ挿入用のストアドプロシージャを作成する

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_two1`()
  始める 
  i INT DEFAULT 0 を宣言します。
  i < 3000 ですが
    mysql_genarate ( uuid ) VALUES( UUID() ) に挿入します。
    i = i + 1 を設定します。
  終了しながら;
終わり

テストcall test_two1()を呼び出すと、10,000 個のデータをテストするのに数分かかります。数千万個のデータの場合、この速度は耐えられないでしょう。

3. ストアドプロシージャを最適化する

バッチ挿入SQL文を使用する

CREATE DEFINER=`root`@`localhost` PROCEDURE `insertPro`( IN sum INT )
  始める
  count INT DEFAULT 0 を宣言します。
  i INT DEFAULT 0 を宣言します。
  SET @exesql = concat( "mysql_genarate(uuid) の値に挿入" );
  @exedata を "" に設定します。
  カウントを 0 に設定します。
  i = 0 に設定します。
  count < sum の場合、DO
    @exedata を連結して設定します( @exedata, ",(UUID())" );
    カウントをカウント + 1 に設定します。
    i = i + 1 を設定します。
    i % 1000 = 0 の場合
      @exedata を SUBSTRING( @exedata, 2 ) に設定します。
      SET @exesql = concat( "mysql_genarate(uuid) の値に挿入", @exedata );
      @exesql からステートメントを準備します。
      ステートメントの実行;
      DEALLOCATE PREPARE ステートメント;
      @exedata を "" に設定します。
    終了の場合;
  終了しながら;
  長さ(@exedata) > 0の場合
    @exedata を SUBSTRING( @exedata, 2 ) に設定します。
    SET @exesql = concat( "mysql_genarate(uuid) の値に挿入", @exedata );
    @exesql からステートメントを準備します。
    ステートメントの実行;
    DEALLOCATE PREPARE ステートメント;
  終了の場合;
終わり

insertPro(10000) の呼び出しには数十分の一秒かかりますが、これは許容範囲内です。

以上が数千万件のデータのMySQLループ挿入の詳細です。MySQLループ挿入の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • .Net Core を使用して数千万のデータを MySQL にインポートする手順
  • .Net Core は数千万のデータを MySQL データベースにインポートします
  • MySQLデータベースの数千万件のデータクエリとストレージの詳細な説明
  • インデックスを使用して数千万のデータを持つ MySQL のクエリ速度を最適化する
  • 数千万のMySQLデータ量を素早くページ分割する方法
  • 数千万のデータを扱うMySQLのページングクエリのパフォーマンスを最適化する
  • 数千万のデータを含む MySQL テーブルを最適化するにはどうすればよいでしょうか?
  • 単一の MySQL テーブルで数千万のデータを処理するアイデアを共有する

<<:  Linux bzip2 コマンドの使用

>>:  IDEA の Docker プラグインを介して Springboot プロジェクトを公開する方法の詳細なチュートリアル

推薦する

vue+drf+サードパーティのスライディング検証コードアクセスの実装

目次1. 背景2. 検証プロセス3. 検証を作成する4. フロントエンドコード4.1 コアjsファイ...

Linux bzip2 コマンドの使用

1. コマンドの紹介bzip2 は、ファイルの圧縮と解凍に使用されます。これは、Linux システム...

HTML ページに画像を挿入し、マップ インデックスを追加する方法の例

1. WEBでサポートされている画像形式: GIF: 256色を保存でき、透明色をサポートし、アニメ...

突然外部ネットワークからDockerにアクセスできなくなる問題の解決方法

マスターのメソッドによると、原因は sysctl net.ipv4.ip_forward であること...

Linuxでディレクトリを効率的に切り替える方法

Linux でディレクトリを切り替えるとなると、誰もが間違いなくcdコマンドを思い浮かべるでしょう。...

WeChatアプレットが検索ボックス機能を実装

この記事の例では、WeChatアプレットの検索ボックス機能を実装するための具体的なコードを参考までに...

IDEA は Docker プラグインを使用します (初心者向けチュートリアル)

目次例示する1. Dockerリモートアクセスを有効にする2. Dockerに接続する3. イメージ...

vue+node+socket ioは複数人のインタラクションを実現し、プロセス全体を解放します

1. 背景1. フロントエンドはvue + vuex + socket.io-clientを使用しま...

データベース管理における 19 の MySQL 最適化方法

MySQL データベースを最適化すると、データベースの冗長性を削減できるだけでなく、データベースの実...

CentOS 6 ZLMediaKit のコンパイルとインストール分析

Centos6にZLMediaKitをインストールするZLMediaKit の作者は Ubuntu ...

MySQL InnoDB アーキテクチャの概要

目次導入1. MySQLデータベースの全体的なアーキテクチャSQL インターフェースパーサーオプティ...

Nginx_geo モジュールを使用して CDN スケジュールを設定する方法

NginxのGeoモジュールの紹介geo ディレクティブは、ngx_http_geo_module ...

MySQL 5.7.16 ZIP パッケージのインストールと設定のチュートリアル

この記事では、MySQL 5.7.16 ZIPパッケージのインストールと設定のチュートリアルを参考ま...

純粋な CSS3 を使用して、円の動的な光る特殊効果アニメーションを実装するためのサンプル コード

この記事では、主に、円形のダイナミックな光る特殊効果アニメーションを実現するための純粋な CSS3 ...

Linux のユーザーとグループ管理によく使われるコマンドの概要

この記事では、Linux のユーザーとグループの管理によく使用されるコマンドをまとめます。ご参考まで...