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ツールを使用して、誤って削除されたファイルやディレクトリを復元します。

推薦する

nestjs からフロントエンドに返されるデータ形式のカプセル化実装

通常、開発プロセスでは、インターフェイス要求の成功または失敗は httpcode に基づいて決定され...

CentOS7 で MySQL 5.7.24 をコンパイルしてインストールする詳細なチュートリアル

目次依存関係をインストールするブーストをインストールMySQLをコンパイルしてインストールする構成依...

JavaScript でのカスタム スワイパー コンポーネントの詳細な説明

目次エフェクト表示コンポーネント設定ステップ1ステップ2ステップ3コンポーネントの使用ステップ1ステ...

Nginx+tomcat ロードバランシングクラスタの実装方法

実験環境は以下のとおりですここでは、4 台のサーバー (1 台の nginx、負荷用の 2 台の t...

WEB中国語フォントアプリケーションガイド

Web 上でフォントを使用することは、基本的なスキルであると同時に芸術でもあります。英語のフォントに...

Videojs+swiper が Taobao の商品詳細カルーセルを実現

この記事では、Taobao商品詳細のカルーセルを実現するためのvideojs+swiperの具体的な...

HTML シンボルからエンティティへのアルゴリズムのチャレンジ

チャレンジ:文字列内の文字 &、<、>、" (二重引用符)、および &...

HTMLは読み取り専用のテキストボックスを実装しており、コンテンツを変更することはできません。

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!--方法 1: onf...

Ubuntu 18.04 のインストールで「ldlinux.c32 のロードに失敗しました」というエラーが表示され、解決手順がわかりません

序文私は Win7 を搭載した古いラップトップを持っています。古いシステムを維持しながら、同時に U...

CSS3で実装されたテキストポップアップ効果

成果を達成する実装コードhtml <div>123WORDPRESS.COM</d...

nginx プロキシ ポート 80 からポート 443 への実装

nginx.conf設定ファイルは次のとおりです。 ユーザー nginx; ワーカープロセス 1; ...

nginx ベースのブラウザネゴシエーションキャッシュプロセスの詳細な説明

この記事は主に、nginx に基づいてブラウザネゴシエーションキャッシュを設定する詳細なプロセスを紹...

VirtualBox+Ubuntu16でKubernetesクラスタを構築する実装

目次Kubernetesについて基本的な環境の準備VirtualBoxをインストールするUbuntu...

MySQL ログの設定と表示方法

MySQL には次のログがあります。エラーログ: -log-errクエリログ: -logスロークエリ...

MySQLがデータの削除を推奨しない理由

目次序文InnoDB ストレージ アーキテクチャInnodb テーブルスペースインドストレージディス...