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

推薦する

ファイルをアップロードするための HTML フォームの「参照」ボタンを変更する方法

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

Nodejs でタイムドクローラーを実装する完全な例

目次事件の原因Node Scheduleを使用してスケジュールされたタスクを実装する1. node-...

Vue スクロールダウンしてさらにデータを読み込む スクロールケースの詳細な説明

vue-無限スクロールインストール npm インストール vue-infinite-scroll -...

CentOS の環境変数と設定ファイルの詳細な説明

序文CentOS 環境変数設定ファイル システムは階層型システムであり、他のマルチユーザー アプリケ...

CSSアニメーションに基づくSVGボタンのサンプルコード

具体的なコードは次のとおりです。 <a href="#"> <...

MySQL データベース ターミナル - 一般的な操作コマンド コード

目次1. ユーザーを追加する2. ユーザー名とホストを変更する3. パスワードを変更する4. ユーザ...

Vue3 Reactivityの実装方法を教えます

目次序文始めるちょっとした考えコードの実装真似する実装トラックトリガーの実装観察の実装計算の実装序文...

Dreamweaver8を使用してウェブサイトのファイルをチェックして整理する方法

Dreamweaver8 を使用して独自の Web サイトを作成する目的は何ですか?インターネットに...

シリアルポート使用時のvue-electronの問題解決

エラーは次のとおりです:キャッチされない TypeError: 未定義のプロパティ 'mod...

Linux ファイルを分割するための split コマンドの詳細な説明

いくつかの簡単な Linux コマンドを使用すると、ストレージまたは電子メールの添付ファイルのサイズ...

React Hooks の一般的な使用シナリオ (概要)

目次1. ステートフック1. 基本的な使い方2. 更新3. 合併を実現する4. 遅延初期化状態5. ...

フロントエンド例外 502 不正なゲートウェイの原因と解決策

目次502 不正なゲートウェイ エラーの発生1. 502 不正なゲートウェイ エラーとは何ですか? ...

Vue パッケージアップロードサーバー更新 404 問題に対する 2 つの解決策

1: nginxサーバーソリューション、.conf構成ファイルを変更する解決策は2つある1: 位置 ...

mysqlは指定された期間内の統計データを取得します

mysqlは指定された期間内の統計データを取得します年別統計 選択 カウント(*)、 DATE_FO...

MySQL での実行計画の詳細分析

序文効率的なSQL文の書き方は、Explain実行計画の分析と切り離せません。実行計画とは何か、効率...