ホームページ >Java >&#&チュートリアル >Java の PreparedStatement を使用して MySQL での複数行の挿入を最適化するにはどうすればよいですか?

Java の PreparedStatement を使用して MySQL での複数行の挿入を最適化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-26 15:28:15219ブラウズ

How Can I Optimize Multiple Row Insertions in MySQL Using Java's PreparedStatement?

PreparedStatement を使用した Java による MySQL での複数行挿入の最適化

データベース プログラミングでは、テーブルに複数の行を効率的に挿入することがパフォーマンスにとって重要です。この記事では、Java の PreparedStatement を使用して MySQL での複数行の挿入を最適化する方法について説明します。

Background

以前は、単純なループを使用して一度に 1 行ずつ行を挿入していました。非効率的になる可能性があります。パフォーマンスを向上させるために、単一のステートメントに複数の行を挿入できる MySQL でサポートされている構文を利用することを目指しています。

PreparedStatement のバッチ処理の使用

MySQL は、実行方法としてバッチ処理を提供します。複数のステートメントをグループとして。 PreparedStatement を使用すると、addBatch() メソッドを使用して個々の行データをバッチに追加することでこれを実現できます。バッチが完了するか、特定のサイズ制限に達したら、executeBatch() を使用してバッチ全体を実行できます。

以下は PreparedStatement を使用したバッチ処理の例です。

public void save(List<Entity> entities) throws SQLException {
    try (
        Connection connection = database.getConnection();
        PreparedStatement statement = connection.prepareStatement(SQL_INSERT);
    ) {
        int i = 0;

        for (Entity entity : entities) {
            statement.setString(1, entity.getSomeProperty());
            // ...

            statement.addBatch();
            i++;

            if (i % 1000 == 0 || i == entities.size()) {
                statement.executeBatch(); // Execute every 1000 items.
            }
        }
    }
}

バッチ処理によりパフォーマンスが向上します。データベースへのラウンドトリップを減らし、サーバーが複数のステートメントを効率的に実行できるようにすることで、

追加リソース

JDBC バッチ処理の詳細:

  • [JDBC チュートリアル - PreparedStatement の使用](https://docs.oracle.com/javase/tutorial/jdbc/) Basics/prepared.html)
  • [JDBC チュートリアル - ステートメント オブジェクトの使用バッチ更新](https://docs.oracle.com/javase/tutorial/jdbc/basics/batchupdates.html)

以上がJava の PreparedStatement を使用して MySQL での複数行の挿入を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。