ホームページ >Java >&#&チュートリアル >JDBC での単一挿入とバッチ挿入: どちらの方法がより優れたパフォーマンスを提供しますか?

JDBC での単一挿入とバッチ挿入: どちらの方法がより優れたパフォーマンスを提供しますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 04:34:11762ブラウズ

Single vs. Batch Inserts in JDBC: Which Method Offers Better Performance?

JDBC を使用したバッチ挿入の最適化

JDBC で有効になっているバッチ処理は、クエリを一括実行することでネットワーク遅延を大幅に削減します。ただし、効率に関して、開発者は、(単一の挿入ステートメントに結合するのではなく) 複数の個別の挿入を作成した方がパフォーマンスが向上するかどうか疑問に思うことがよくあります。

単一のバッチ挿入と結合されたバッチ挿入の評価

複数の挿入を単一のステートメントに折りたたむことは直感的に効率的であるように見えるかもしれませんが、必ずしもそうではありません。 JDBC バッチ処理は、個別の挿入ステートメントを 1 つのユニットとして処理し、それらをまとめてデータベースに送信して実行します。したがって、値の挿入方法はパフォーマンスに大きな影響を与えません。

バッチ挿入速度を向上させるためのヒント

  • PreparedStatements を使用する:プリペアド ステートメントを使用すると、クエリを毎回解析して再コンパイルする必要がなくなり、効率が向上します。
  • バッチ サイズの最適化: 最適なバッチ サイズを見つけると、パフォーマンスが向上します。さまざまなサイズを試して、アプリケーションに最適な値を決定してください。
  • バッチ パラメータのクリア: バッチを追加した後、clearParameters() を呼び出してステートメントをリセットし、次のセットに備えます。値を使用して、以前の値が誤って使用されるのを防ぎます。
  • コミット間隔: バッチを定期的にコミットします。 (各挿入後ではなく) オーバーヘッドが削減され、スループットが向上します。

サンプル コード

効率的なバッチ挿入を示す例は次のとおりです。

PreparedStatement ps = c.prepareStatement("INSERT INTO employees VALUES (?, ?)");

ps.setString(1, "John");
ps.setString(2,"Doe");
ps.addBatch();

ps.clearParameters();
ps.setString(1, "Dave");
ps.setString(2,"Smith");
ps.addBatch();

ps.clearParameters();
int[] results = ps.executeBatch();

以上がJDBC での単一挿入とバッチ挿入: どちらの方法がより優れたパフォーマンスを提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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