【发布时间】:2022-11-10 01:01:24
【问题描述】:
我最近从 Spring Boot 2.4.x 升级到 2.6.x,其中包括将 Hibernate 从 5.1.2 更新到 5.6.3。更新后,INSERT 不再批处理(我可以判断,因为更新前的执行时间要快得多。)
我在 Hibernate 发行说明中没有看到任何相关的内容。
知道修复可能是什么吗?
我的配置:
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://myurl?reWriteBatchedInserts=true
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
jdbc:
batch_size: 50
order_inserts: true
实体:
@Id
@GeneratedValue(generator = "sequence-generator")
@GenericGenerator(
name = "sequence-generator",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@Parameter(name = "sequence_name", value = "my_id_seq"),
@Parameter(name = "initial_value", value = "1"),
@Parameter(name = "increment_size", value = "50")
}
)
private Integer id;
Postgresql 驱动程序:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.3.1</version>
</dependency>
【问题讨论】:
-
你怎么知道批处理模式不再起作用?您是否激活了统计信息的踪迹?
-
我也遇到过同样的问题!有一天我说:是时候升级东西了。所以我去了 hibernate-core:5.6.7.Final 之后发现一切都变慢了。经过痛苦的分析,我意识到批处理停止工作(通过日志记录验证)。我还可以告诉你,中断发生在 5.6.1-Final 版本中,而 5.6.0-Final 版本运行良好。不知道为什么会这样
标签: postgresql spring-boot hibernate