【发布时间】:2018-10-28 08:35:02
【问题描述】:
我正在使用 Mysql,Spring Data JPA。在我的用例中,我只有 1 个表,例如客户(ID、FIRST_NAME、LAST_NAME) 我想要实现的是批量/批量更新,其中更新语句是一个组,如上面示例中所示以减少数据库往返。
我已经设置了所有属性
- hibernate.order_inserts: true
- hibernate.order_updates: true
- hibernate.jdbc.batch_versioned_data: true
但结果是(更新语句未分组):来自 MySQL 常规日志的日志
2018-10-28T03:18:32.545233Z 1711 Query update CUSTOMER set FIRST_NAME=’499997′, LAST_NAME=’499998′ where id=499996;
2018-10-28T03:18:32.545488Z 1711 Query update CUSTOMER set FIRST_NAME=’499998′, LAST_NAME=’499999′ where id=499997;
2018-10-28T03:18:32.545809Z 1711 Query update CUSTOMER set FIRST_NAME=’499999′, LAST_NAME=’500000′ where id=499998;
期望的结果:(更新被分组为单个查询,从而减少了数据库往返)
2018-10-28T03:18:32.545233Z 1711 Query update CUSTOMER set FIRST_NAME=’499997′, LAST_NAME=’499998′ where id=499996; update CUSTOMER set FIRST_NAME=’499998′, LAST_NAME=’499999′ where id=499997; update CUSTOMER set FIRST_NAME=’499999′, LAST_NAME=’500000′ where id=499998;
我的应用程序需要执行超过 1 亿次更新,我想这可能是最快的方式。
【问题讨论】:
-
我相信 this 是您可以使用 Hibernate/JPA 获得的最接近的结果
标签: performance hibernate spring-data-jpa batch-updates batching