ホームページ >データベース >mysql チュートリアル >「rewriteBatchedStatements=true」は MySQL の「max_allowed_packet」を使用してどのように JDBC パフォーマンスを最適化しますか?
MySQL を使用した JDBC パフォーマンスの最適化: rewriteBatchedStatements=true
と max_allowed_packet
JDBC パラメータ rewriteBatchedStatements=true
は、複数の SQL ステートメントを単一のネットワーク送信に統合することにより、ネットワーク効率を大幅に向上させます。以下に示すように、この合理化されたアプローチによりネットワークのオーバーヘッドが最小限に抑えられます。
コード例:
<code class="language-java">try (Connection con = DriverManager.getConnection(myConnectionString, "root", "whatever")) { try (PreparedStatement ps = con.prepareStatement("INSERT INTO jdbc (`name`) VALUES (?)")) { for (int i = 1; i < 1000; i++) { ps.setString(1, "Name " + i); ps.addBatch(); } ps.executeBatch(); } }</code>
ネットワークトラフィックへの影響:
rewriteBatchedStatements=true
なし: 各 INSERT ステートメントは個別に送信されます。 例:
<code class="language-sql">INSERT INTO jdbc (`name`) VALUES ('Name 1'); INSERT INTO jdbc (`name`) VALUES ('Name 2');</code>
rewriteBatchedStatements=true
の場合: 複数の INSERT ステートメントが 1 つのパケットに結合されます。例:
<code class="language-sql">INSERT INTO jdbc (`name`) VALUES ('Name 1'), ('Name 2');</code>
max_allowed_packet
とのインタラクション:
重要なことは、JDBC は MySQL の max_allowed_packet
設定を尊重することです。 この制限が低い場合、JDBC は大きなバッチをより小さな複数行の INSERT ステートメントにインテリジェントに分割し、パケットのサイズ超過を防ぎ、クエリの整合性を確保します。
要約:
rewriteBatchedStatements=true
を設定すると、ネットワークのラウンドトリップが削減され、JDBC のパフォーマンスが最適化されます。 max_allowed_packet
のインテリジェントな処理により互換性が保証され、MySQL のパケット サイズ制限の超過によって引き起こされるエラーが回避されます。 これにより、データベースの対話がより高速かつ効率的に行われます。
以上が「rewriteBatchedStatements=true」は MySQL の「max_allowed_packet」を使用してどのように JDBC パフォーマンスを最適化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。