ホームページ >Java >&#&チュートリアル >JDBC の「rewriteBatchedStatements」を使用してネットワーク効率を向上させ、大きなパケット サイズを処理するにはどうすればよいでしょうか?
rewriteBatchedStatements による JDBC の最適化
JDBC の rewriteBatchedStatements パラメーターを使用すると、複数のクエリを 1 つのパケットに結合することで効率的なネットワーク通信が可能になります。これにより、ネットワーク I/O に関連するオーバーヘッドを大幅に削減できます。
バッチ処理の仕組み
rewriteBatchedStatements を true に設定すると、JDBC ドライバーは複数のステートメントを自動的に 1 つのステートメントにグループ化します。単一パケット。これは、データが繰り返し行われることが多く、効率的にパックできる挿入クエリや更新クエリを送信する場合に特に便利です。
たとえば、次のコードを考えてみましょう。
<code class="java">try (Connection con = DriverManager.getConnection(myConnectionString, "root", "whatever")) { try (PreparedStatement ps = con.prepareStatement("INSERT INTO jdbc (`name`) VALUES (?)")) { for (int i = 1; i <= 5; i++) { ps.setString(1, "Lorem ipsum dolor sit amet..."); ps.addBatch(); } ps.executeBatch(); } }</code>
バッチ処理を行わない場合、ドライバーは 5 つの個別の INSERT ステートメントをデータベースに送信します。ただし、rewriteBatchedStatements を有効にすると、代わりに単一の複数行 INSERT ステートメントが送信される場合があります。
<code class="sql">INSERT INTO jdbc (`name`) VALUES ('Lorem ipsum dolor sit amet...'),('Lorem ipsum dolor sit amet...')</code>
max_allowed_packet の問題の回避
MySQL の max_allowed_packet 変数は、最大値を設定します。ネットワークパケットのサイズ。パケットがこのサイズを超えると、クエリが正常に実行されない可能性があります。 JDBC ドライバーはこの制限を認識しており、必要に応じて大きなパケットを自動的に小さなパケットに分割します。
したがって、ドライバーが自動的に管理するため、通常、開発者は max_allowed_packet について気にする必要はありません。ただし、非常に大きなパケット サイズが必要な場合、開発者はそれに対応するために MySQL サーバーの max_allowed_packet 値を調整する必要がある場合があります。
以上がJDBC の「rewriteBatchedStatements」を使用してネットワーク効率を向上させ、大きなパケット サイズを処理するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。