![](/img/trans.png)
[英]Difference between hibernate.jdbc.fetch_size and batch fetch strategy @BatchSize
[英]What is the difference between hibernate.jdbc.fetch_size and hibernate.jdbc.batch_size?
我正在嘗試調整我的應用程序,遇到了一些關於批量獲取和批量選擇的博客,並將我的理解如下。
hibernate.jdbc.fetch_size
- 用於指定要在選擇查詢中提取的行數。hibernate.jdbc.batch_size
- 用於指定要在單個數據庫命中中執行的插入或更新的數量。請讓我知道我的理解是否正確? 還有上述參數的最佳值是什么..
這兩個選項都在 JDBC 驅動程序中設置屬性。 在第一種情況下, hibernate.jdbc.fetch_size
在 JDBC 驅動程序中設置語句的提取大小,即當 select 語句上有多個行結果時提取的行數。
在第二種情況下, hibernate.jdbc.batch_size
決定了一次發送到數據庫執行的更新(插入、更新和刪除)的次數。 此參數是執行批量插入所必需的,但必須與有序插入參數和 JDBC 驅動程序將插入重寫為批量插入語句的能力相結合。
看這個鏈接
你的假設是正確的。
hibernate.jdbc.fetch_size
Hibernate 配置屬性用於為 Hibernate 在當前運行的 Persistence Context 期間使用的每個語句設置 JDBC Statement#setFetchSize
屬性。
通常,您不需要設置此屬性,因為默認值就可以了,特別是對於在單個數據庫往返中獲取整個ResultSet
MySQL 和 PostgreSQL。 因為 Hibernate 遍歷整個ResultSet
,所以最好在一次拍攝中獲取所有行,而不是使用多次往返。
僅對於 Oracle,您可能需要設置它,因為默認fetchSize
僅為10
。
hibernate.jdbc.batch_size
屬性用於將多個 INSERT、UPDATE 和 DELETE 語句一起批處理,以便可以在單個數據庫調用中設置它們。
如果你設置了這個屬性,你最好也設置這兩個:
hibernate.order_inserts
為true
hibernate.order_updates
為true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.