Sql 设置过高的批量有什么缺点?

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个查询,它会在一个批次中不断发送它

我在application.yml中设置了
批次大小

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之间的整数