Sql 设置过高的批量有什么缺点?
我在application.yml中设置了Sql 设置过高的批量有什么缺点?,sql,spring,postgresql,Sql,Spring,Postgresql,我在application.yml中设置了批次大小: spring: profiles: dev jpa: properties: hibernate: generate_statistics: true jdbc: batch_size: 20 为什么不应将批处理大小设置为尽可能高的值?将批大小设置为10000有什么缺点?它的行为是否与batch\u size:20相同?对于20个查询,它会在一个批次中不断发送它
批次大小
:
spring:
profiles: dev
jpa:
properties:
hibernate:
generate_statistics: true
jdbc:
batch_size: 20
为什么不应将批处理大小设置为尽可能高的值?将批大小设置为10000有什么缺点?它的行为是否与
batch\u size:20
相同?对于20个查询,它会在一个批次中不断发送它们,而不是向数据库发出另一个请求。这不是比将其设置为较低的值(如20)更好的行为吗?小批量的原因是内存消耗
从文档中:
Hibernate将在中缓存所有新插入的客户实例
会话级缓存,因此,当事务结束时,100000个实体
由持久性上下文管理。如果最大内存
分配给JVM的资源非常少,此示例可能会失败,因为
OutOfMemoryException。Java1.8JVM分配了
可用RAM或1Gb,可轻松容纳计算机上的100000个对象
堆
长时间运行的事务会耗尽连接池,因此其他事务
交易没有机会继续进行
JDBC批处理在默认情况下不启用,因此每个insert语句
需要数据库往返。要启用JDBC批处理,请设置
将hibernate.jdbc.batch_size属性设置为10到50之间的整数