![](/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.