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

推薦する

MySQL インデックスの知識の要約

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...

Reactの新バージョンのライフサイクルフック機能と使用方法の詳細な説明

旧ライフサイクルと比較して 3つのフックが廃止され、2つの新しいフックが追加されましたReact16...

VUE ユニアプリコア知識の簡単な紹介

目次仕様a. ページファイルはVueの単一ファイルコンポーネント仕様に準拠しています。 b. コンポ...

Linux の netstat コマンドの詳細な紹介

目次1. はじめに2. 出力情報の説明3. netstatの共通パラメータ4. netstatネット...

CSS3のvar()を使用して実行時にscss変数の値を変更する詳細な説明

var() の紹介と使用法詳細 (MDN) IEは無効ですが、他の主流のブラウザは有効ですvar()...

ウェブデザインで注意すべき検索最適化の知識

1. 新サイトホームページのリンクレイアウト1. リンク配置の位置:リンク配置の位置によって、リンク...

MySQL の昇順および降順データソートの実装

データの昇順、降順ソート1. フィールド名による単一フィールドのソート順機能:どのフィールドを基準に...

JavaScript WebAPI、DOM、イベント、操作要素例の詳しい説明

目次ウェブAPI DOM DOMツリーDOM要素取得方法ドキュメントオブジェクトのプロパティイベント...

Reactプロジェクトで要素を使用する方法

React プロジェクトで要素フレームワークを使用するのは今回が初めてです。非常に単純な問題に遭遇し...

Vue は水の波紋効果のクリックフィードバック指示を実装します

目次水波効果実装を見てみましょう水の波紋のデフォルトスタイルをカスタマイズする水の波紋の位置と直径を...

HTML/CSS におけるフロートの使用例の詳細

1. floatの基本的な使用例1. まず 2 つの div ボックスを作成し、高さ、幅、背景色を設...

jsオブジェクト指向カプセル化カスケードドロップダウンメニューリストの実装手順

この例で開発されたカスケード ドロップダウン メニューは、既存の JSON データに基づいて作成され...

LinuxでifconfigとaddrがIPアドレスを表示できない問題を解決する

1. 仮想マシンにLinuxシステムをインストールし、仮想マシンを起動し、rootとパスワードを入力...

imgタグ間のスペースの問題の詳細な説明

IMG タグの基本分析 HTML5 では、img タグには 4 つの要素があります。 (1) src...

Alibaba Cloud ドメイン名と IP バインディングの手順と方法

1 Alibaba Cloud コンソールに入り、ドメイン名コンソールを見つけて、バインドするドメイ...