pra*_*eth 3 hibernate jdbc batch-processing
正如hibernate 文档所说,当进行批量插入/更新时,当对象数量等于 jdbc 批量大小 ( hibernate.jdbc.batch_size)时,会话应该被刷新和清除。我的问题是为什么这个数字应该等于hibernate.jdbc.batch_size. 有性能提示吗?
编辑:
例如,认为我hibernate.jdbc.batch_size在 hibernate.cfg 文件中将 设置为 30。然后正如文档所说,当对象计数等于 30 时应该刷新会话。为什么我不应该在对象计数为 20 或 40 时刷新?
JDBC 批处理包括执行以下操作:
刷新会话包括告诉 Hibernate:将保存在内存中的所有内容插入到数据库中。
因此,如果您的批次大小设置为 30,并且您每刷新 5 个实体,Hibernate 将执行大量 5 个插入语句的小批次,而不是执行 30 个语句的 6 倍的批次。由于您已确定 30 是最佳批量大小,因此每 5 个实体刷新一次不会使用此最佳大小。
相反,如果你每 35 个实体刷新一次,那么 Hibernate 将执行一批 30 个插入,然后一批 5,然后一批 30,然后一批 5,等等。再一次,你不是使用最佳批量大小。
如果每 30 个实体刷新一次,那么 hibernate 将只执行最佳大小的批处理,如果实体总数不是 30 的倍数,则最后一个除外。
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |