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 プロジェクトを公開する方法の詳細なチュートリアル

推薦する

SQL Server コメントのショートカット キー操作

SQL Server のバッチコメントバッチ注釈Ctrl + (K, C): Ctrlキーを押しなが...

nginx で正規表現を使用してワイルドカードドメイン名を自動的に一致させる方法

Nginxは正規表現を使用して、ワイルドカードドメイン名をディレクトリに自動的に一致させます。 Ng...

ウェブサイトのフロントエンドをエレガントでユーザーにとって魅力的なものにする方法

ウェブフロントエンドのウェブサイトの気質は感情であり、言葉なしでユーザーを魅了できる感情です。では、...

Windows Server 2016 でサービスを展開する方法 (グラフィック チュートリアル)

導入インストールするシステムの数が多い場合、USB フラッシュ ドライブまたは CD を使用した手動...

Dockerの高可用性構成の詳細な説明

Docker の作成Docker Compose は、管理対象コンテナをプロジェクト、サービス、コン...

nginx を使用したプロキシ サーバーの設定

Nginx は、リバース プロキシ機能を使用して負荷分散を実装できるほか、フォワード プロキシ機能を...

Centos8 で NIS ドメイン サービスをセットアップおよび構成するための詳細な手順

目次NIS の紹介ネットワーク環境: 1. 環境の準備(両方のノードが必要) 2.nisマスターサー...

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

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

Nginx フォワード プロキシとリバース プロキシ、および負荷分散機能の構成コード例

この記事は主に、Nginx のフォワード プロキシとリバース プロキシ、および負荷分散機能の設定コー...

Docker インストール Nginx チュートリアル 実装図

Nginx をインストールして試してみましょう。画像はクラスであり、コンテナはオブジェクトであること...

Nginxでネットワーク分離を解決した実践記録を詳しく解説

必要最近、Node オンライン サービスを移行する必要があったため、2 つの新しいオンライン サーバ...

JavaScript 組み込みオブジェクトの概要

目次1. 組み込みオブジェクト2. 数学オブジェクト1. Mathオブジェクトの使用2. 指定された...

Python ベースの MySQL レプリケーション ツールの詳細な説明

目次1. はじめに2回目の練習2.1 インストールと設定2.2 コアクラスの紹介2.3 使い方は? ...

Dockerfile 内の予約語命令の解析処理

目次1. Dockerfile とは何ですか? 2. Dockerfile構築プロセスの分析3. D...

EXPLAIN を使って MySQL の SQL 実行プランを分析する方法

序文MySQL では、EXPLAIN コマンドを使用して、テーブルの接続方法や SELECT ステー...