ホームページ >Java >&#&チュートリアル >JDBC は MySQL の max_allowed_packet 制限に従ってバッチ処理されたステートメントをどのように管理しますか?
JDBC の rewriteBatchedStatements 構成は、複数のクエリを 1 つのパケットにパックすることでネットワーク オーバーヘッドを最適化します。これにより、MySQL サーバーの max_allowed_packet 制限に関する懸念が生じます。
RewriteBatchedStatements によるネットワーク オーバーヘッドの削減
rewriteBatchedStatements が true に設定されている場合、JDBC はクエリを単一のネットワーク パケットに結合します。例:
<code class="java">ps.setString(1, "..."); ps.addBatch(); ps.setString(1, "..."); ps.addBatch(); ps.executeBatch();</code>
rewriteBatchedStatements なし:
<code class="sql">INSERT INTO jdbc (`name`) VALUES ('Line 1: ...') INSERT INTO jdbc (`name`) VALUES ('Line 2: ...')</code>
rewriteBatchedStatements あり:
<code class="sql">INSERT INTO jdbc (`name`) VALUES ('Line 1: ...'),('Line 2: ...')</code>
JDBC の max_allowed_packet の認識
はい、JDBC は max_allowed_packet 値を認識し、それに応じて結合クエリのサイズを調整します。
例
MySQL の一般ログを有効にすることで、JDBC を観察できます。接続時に max_allowed_packet を検査します。さらに、max_allowed_packet を低い値に設定すると、結合サイズが制限を超えると、JDBC はバッチ クエリをより小さなパケットに分割します。
以上がJDBC は MySQL の max_allowed_packet 制限に従ってバッチ処理されたステートメントをどのように管理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。