6秒でMySQLに100万件のレコードを挿入する方法を教えます

6秒でMySQLに100万件のレコードを挿入する方法を教えます

1. アイデア

MySQL に 1,000,000 件のレコードを挿入するのにたった 6 秒しかかかりませんでした。

要点:

1. PreparedStatement オブジェクトの使用


2. rewriteBatchedStatements=true はバッチ挿入をオンにし、挿入は 1 回だけ実行され、すべての挿入が高速化されます。

2. コード

パッケージ test0823.demo1;

java.sql.* をインポートします。

/**
 * @著者: Bei-Zhen
 * @日付: 2020-08-24 0:43
 */
パブリッククラスJDBC2 {

  //静的int count = 0;

  パブリック静的voidメイン(String[] args) {

    長い開始 = System.currentTimeMillis();
    接続();
    長い終了 = System.currentTimeMillis();
    System.out.println("所要時間: " + (終了 - 開始)/1000 + "秒");
  }

  パブリック静的voidconn(){
    //1. ドライバー jar パッケージをインポートします //2. ドライバーを登録します (mysql5 以降のドライバー jar パッケージでは、ドライバーの登録手順を省略できます)
    //Class.forName("com.mysql.jdbc.Driver");
    //3. データベース接続オブジェクトを取得します。Connection conn = null;
    PreparedStatement pstmt = null;
    {
      試す {
        //"&rewriteBatchedStatements=true"、一度に複数のデータを挿入、一度だけ挿入conn = DriverManager.getConnection("jdbc:mysql:///test?" + "&rewriteBatchedStatements=true","root","root");
        //4. SQL ステートメントを定義します。String sql = "insert into user values(default,?,?)";
        //5. SQLを実行するPreparedStatementオブジェクトを取得する
        pstmt = conn.prepareStatement(sql);
        //6. 継続的にSQLを生成する
        (int i = 0; i < 1000000; i++) の場合 {
          pstmt.setString(1,(int)(Math.random()*1000000)+"");
          pstmt.setString(2,(int)(Math.random()*1000000)+"");
          pstmt.addBatch();
        }
        //7. pstmt.executeBatch() を実行してデータベースにデータを一度挿入します。
        System.out.println("1,000,000 個の情報が正常に追加されました!");

      } キャッチ (SQLException e) {
        e.printStackTrace();
      ついに
        //8. リソースを解放する //nullポインタ例外を回避する if (pstmt != null) {
          試す {
            pstmt.close();
          } キャッチ (SQLException e) {
            e.printStackTrace();
          }
        }

        if(conn != null) {
          試す {
            接続を閉じる();
          } キャッチ (SQLException e) {
            e.printStackTrace();
          }
        }
      }
    }

  }

}

3. 運用結果

1,000,000件の情報追加に成功しました!
所要時間: 6秒


これで、6 秒で 100 万件のレコードを MySQL に挿入する方法に関するこの記事は終了です。100 万件のレコードを MySQL に挿入する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySql クイック挿入数千万の大規模データの例
  • 88 秒で 1,000 万件のレコードを MySQL データベース テーブルに挿入する方法
  • Java で JDBC を使用して MySQL に数百万のデータを挿入するサンプル コード
  • MySQLに何百万ものテストデータを素早く挿入する方法

<<:  JS でタブ効果を書く

>>:  Linuxはlsof/extundeleteツールを使用して、誤って削除されたファイルやディレクトリを復元します。

推薦する

MySQLのMERGEストレージエンジンの詳細な説明

MERGE ストレージ エンジンは、MyISAM テーブルのグループを論理ユニットとして扱い、同時に...

jQuery プロジェクトで重複送信を防ぐ方法

新しいプロジェクトでは、axios によって重複した送信を防ぐことができますが、古いプロジェクト (...

TypeScript 3.7 で注目すべき 3 つの新機能について簡単に説明します。

目次序文オプションの連鎖ヌル結合呼び出されていない関数のチェック他の序文TypeScript 3.7...

Dockerイメージのローカル移行の実装

最近 Docker を勉強しているのですが、よく問題に遭遇します。Docker イメージをダウンロー...

MySQL 5.7.17 zip インストールおよび設定チュートリアル MySQL 起動失敗の解決策

MySQL 5.7.17、現在最新バージョンのようです、ダウンロードアドレスここで、プラットフォーム...

sysbenchツールによるMySQLデータベースのパフォーマンステストの実装方法

1. 背景Sysbench は、システムのハードウェア パフォーマンスをテストできるストレス テスト...

CSSをiPhoneのフルスクリーンに適応させる方法

1. メディアクエリ方式 /*iPhone X への適応*/ @media 画面のみ、(デバイス幅:...

JavaScript 配列のマージのケーススタディ

方法1: var a = [1,2,3]; var b = [4,5] b を連結します。 コンソー...

HTML で中国語を UTF-8 に変換する方法

HTMLでは、中国語のフレーズ「學好好學」は「學好好學」と表現できます。プロジェクトでは、SMSアラ...

Vue の匿名スロットと名前付きスロットの詳細な説明

目次1. 匿名スロット2. 名前付きスロット要約するスロット (slot) は、Vue のコンテンツ...

MYSQL トランザクション チュートリアル Yii2.0 マーチャント引き出し機能

序文私はプログラマーとしてスタートした PHP プログラマーです。これまで、トレーニング コースで勉...

docker を使用して hbase をデプロイする方法

スタンドアロンの hbase について、まずは説明しましょう。 Dockerをインストールするまず ...

Vueはカスタム命令を使用してページの下部に透かしを追加します

プロジェクトシナリオプロジェクトの背景全体にカスタム透かしを追加します。透かしのテキスト、フォントの...

入力が正しいにもかかわらず、MySQL 8.0 でアクセスが拒否される問題を解決する

最近、MySQL を学び始めました。インストールはスムーズに進み、インターネット上の既成のチュートリ...

1 つ以上のフィールドに基づいて重複データを検索する MySQL SQL ステートメント

SQLはテーブル内の重複レコードをすべて見つけます1. テーブルには id と name の 2 つ...