ホームページ >データベース >mysql チュートリアル >「rewriteBatchedStatements=true」はどのようにして MySQL JDBC ネットワークのパフォーマンスを最適化しますか?
rewriteBatchedStatements=true
JDBC (Java Database Connectivity) ドライバーは、rewriteBatchedStatements=true
パラメーターを介して大幅なパフォーマンスの向上を実現します。 この設定により、ドライバーは複数のデータベース クエリを 1 つのネットワーク送信に統合し、ネットワークのオーバーヘッドを大幅に削減できます。
MySQL の max_allowed_packet
設定は、受信パケットの最大サイズを決定します。 バッチ化されたクエリ パケットがこの制限を超えると、エラーが発生する可能性があります。 ただし、JDBC ドライバーはこれをインテリジェントに処理します。max_allowed_packet
を動的に決定し、制限を超えないようにバッチ処理戦略を調整します。
この動作を確認するには、MySQL の一般ログをアクティブにして、JDBC 接続を監視します。 Connector/J が max_allowed_packet
を取得し、それに応じてバッチ処理を調整していることがわかります。
以下は、rewriteBatchedStatements=true
の動作を示すコード例です。
<code class="language-java">String connectionString = "jdbc:mysql://localhost:3307/mydb?" + "useUnicode=true&characterEncoding=UTF-8" + "&rewriteBatchedStatements=true"; try (Connection con = DriverManager.getConnection(connectionString, "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
ステートメントを送信します。 これを有効にすると、JDBC はこれらを単一の複数行 INSERT
に効率的にバンドルし、ネットワーク トラフィックを大幅に最小限に抑えます。
そのため、JDBC は MySQL で効率的なバッチ クエリ処理を保証し、開発者の手動介入を必要とせずにパフォーマンスの強化とシームレスな互換性を提供します。 ドライバーは、サーバーの max_allowed_packet
設定に基づいてバッチ サイズをインテリジェントに管理します。
以上が「rewriteBatchedStatements=true」はどのようにして MySQL JDBC ネットワークのパフォーマンスを最適化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。