11

バッチ更新によりJDBC呼び出しの数が減ると誰もが言っています。誰かが「JDBC呼び出し」の意味と、1つのJDBC呼び出しですべての負荷を運ぶ場合と比較して、そのような呼び出しの数を増やすとコストがかかることを説明できますか。

4

3 に答える 3

11

口語的に、開発者がJDBC 呼び出しというフレーズを使用する場合、彼らはネットワーク経由でデータベースに情報を送信することについて話している。JDBC API のバッチ機能を使用すると、各 SQL ステートメントの呼び出しとは対照的に、単一のネットワーク呼び出しで複数の個別の操作を送信できます。JDBC仕様から:

バッチ更新機能を使用すると、Statement オブジェクトは、一連の異種 SQL ステートメントを 1 つのユニットまたはバッチとしてまとめて、基になるデータ ソースに送信できます。

PreparedStatement の場合、単一のステートメントを作成するだけでよいという追加の利点が存在します。これにより、ステートメント自体を何度もバッチに追加しなくても、バインド パラメータの複数のセットを使用して同じクエリを実行できます。最終的に、ネットワーク トラフィックとそれに関連するオーバーヘッドが減少します。

仕様の例:

PreparedStatement stmt = con.prepareStatement(
"INSERT INTO employees VALUES (?, ?)");

stmt.setInt(1, 2000);
stmt.setString(2, "Kelly Kaufmann");
stmt.addBatch();

stmt.setInt(1, 3000);
stmt.setString(2, "Bill Barnes");
stmt.addBatch();

// submit the batch for execution
int[] updateCounts = stmt.executeBatch();
于 2013-01-10T18:55:55.360 に答える
5

IBMのドキュメントで説明されているように:

JDBC 2.0 以降をサポートする JDBC ドライバーは、バッチ更新をサポートします。バッチ更新を使用すると、DB2(R) 表の行を 1 つずつ更新する代わりに、JDBC に一連の更新を同時に実行するように指示できます。更新の同じバッチに含めることができるステートメントは、バッチ可能ステートメントと呼ばれます。

ステートメントに入力パラメーターまたはホスト式がある場合、そのステートメントは、同じステートメントの他のインスタンスを持つバッチにのみ含めることができます。このタイプのバッチは、均質バッチとして知られています。ステートメントに入力パラメーターがない場合、バッチ内の他のステートメントに入力パラメーターまたはホスト式がない場合にのみ、そのステートメントをバッチに含めることができます。このタイプのバッチは、異種バッチと呼ばれます。同じバッチに含めることができる 2 つのステートメントは、バッチ互換と呼ばれます。

于 2013-01-10T18:58:11.327 に答える
1

JDBC update を呼び出すと、java プログラムはデータベース サーバーに接続し、クエリを実行します。これは、更新ごとに、Java プログラムがデータベース サーバーに接続し、クエリを実行することを意味します。ここで、JDBC バッチ更新を使用する場合、Java アプリケーションはデータベース サーバーに一度だけ接続する必要があり、データベース サーバーですべてのクエリを実行して Java アプリケーションに戻ります。

簡単に言うと、Java アプリケーションとデータベース サーバー間のラウンド トリップが減少します。通常、両方が別のサーバー上にあるため、多くのネットワーク リソースが削減されます。したがって、より優れたパフォーマンスを実現します。

于 2013-01-10T19:04:36.447 に答える