使用 rewriteBatchedStatements=true
JDBC(Java 資料庫連線)驅動程式透過 rewriteBatchedStatements=true
參數提供顯著的效能提升。 此設定使驅動程式能夠將多個資料庫查詢合併到單一網路傳輸中,從而顯著減少網路開銷。
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中文網其他相關文章!