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

推薦する

Vue カスタム箇条書きボックス効果 (確認ボックス、プロンプトボックス)

この記事の例では、参考のためにVueカスタムポップアップ効果の具体的なコードを共有しています。具体的...

PXEを使用してLinuxシステムを自動的に展開する方法

目次背景DHCPの設定DHCP ファイル (動的ホスト構成プロトコル) の編集tftp 設定sysl...

URL を入力すると、バックグラウンドでは具体的に何が起こるのでしょうか?

ソフトウェア開発者は、ネットワーク アプリケーションがどのように動作するかを階層的に完全に理解してい...

MySQL 8.0.11 インストール概要チュートリアル図

インストール環境: CAT /etc/os-release CentOS システムのバージョン情報を...

MySqlは、外部ネットワーク接続クライアントの低速問題を解決するためにskip-name-resolveを使用します。

Tencent Cloud上に構築されたMySQLは、開発用コンピュータでNavicatを使用して...

MySQL 5.7.20 共通ダウンロード、インストール、設定方法と簡単な操作スキル(解凍版無料インストール)

早朝に MySQL 5.7.19 のインストールを終えたばかりですが、午前中に MySQL が最新バ...

MySQLデータテーブルの基本操作:テーブル構造の操作、フィールド操作例の分析

この記事では、テーブル構造操作やフィールド操作など、MySQL データ テーブルの基本的な操作につい...

MySQL フルテキスト検索の中国語ソリューションとサンプルコード

MySQL 全文検索中国語ソリューション最近、会社のプロジェクトで、データベースで中国語を検索する機...

Linux 上の MariaDB は root ユーザーで起動します (推奨)

最近、セキュリティ製品をテストする必要があったため、mariadb の起動ユーザーを root に調...

MySql テーブル、データベース、シャーディング、パーティショニングの知識の詳細な説明

1. はじめにデータベース内のデータ量が一定レベルに達すると、システムパフォーマンスのボトルネックを...

H5ゲームをnginxサーバーにデプロイする方法の詳細な説明

自己学習型ゲーム開発の道において、最も充実した瞬間は、自分でミニゲームを作り、友達と共有して試しにプ...

nginx のロケーションと書き換えの使用法の詳細な説明

1. 位置情報の利用状況の概要ロケーションは、さまざまな処理方法に対してさまざまな種類のリクエストを...

MySQL のテーブルリターンとインデックスカバレッジの例の詳細な説明

目次インデックスタイプインデックス構造非クラスター化インデックスクエリインデックスカバー要約するイン...

メタビューポートはiPhoneでウェブページをフルスクリーン表示コントロールします

困り果てて、ふと、私がよく行くSinaのタッチスクリーン版はどうやって作られているのだろう?と考えま...

JSはフロントエンドのページング効果を実現します

この記事の例では、フロントエンドのページング効果を実現するためのJSの具体的なコードを参考までに共有...