JPA 批量操作性能优化配置

JPA 批量操作性能优化配置

规则说明

本项目使用 Spring Data JPA 进行数据库操作,为提升批量插入和更新的性能,需要启用 Hibernate 的批处理功能。

配置项

以下配置应添加到 application.properties 文件中:

properties 复制代码
# ========== JPA 批量操作性能优化 ==========

# 批量插入时每次批量的大小(默认30)
spring.jpa.properties.hibernate.jdbc.batch_size=1000

# 强制按插入顺序执行更新
spring.jpa.properties.hibernate.order_updates=true

# 对插入语句进行排序,提高批处理效率
spring.jpa.properties.hibernate.jdbc.order_inserts=true

配置说明

配置项 建议值 说明
hibernate.jdbc.batch_size 1000 每次批量插入/更新的记录数。值越大,内存占用越高,但批量效率更高
hibernate.order_updates true 强制按插入顺序执行更新,防止并发更新导致的数据不一致
hibernate.order_inserts true 对插入语句进行排序,提高批处理效率

应用范围

此配置适用于以下场景:

  1. 批量插入 - 一次插入多条记录(如批量创建用户消息、合同审批节点等)
  2. 批量更新 - 一次更新多条记录(如批量删除消息、更新审批状态等)
  3. 大数据量操作 - 处理大量数据时的性能优化

注意事项

  1. 内存占用

    • batch_size 设置过大会增加内存占用
    • 建议根据实际数据量和服务器内存情况调整
  2. 事务边界

    • 批量操作应在同一事务内完成
    • 使用 @Transactional 注解确保事务一致性
  3. 测试验证

    • 修改配置后,测试批量操作的执行结果
    • 确认数据正确性和性能提升

相关业务场景

合同审批流程创建

java 复制代码
// 批量创建审批节点
List<ContractWorkFlow> workFlowNodes = new ArrayList<>();
// ... 添加节点
contractWorkFlowMapper.saveAll(workFlowNodes);  // 使用批量插入

消息批量删除

java 复制代码
// 批量删除审批消息
List<Message> messages = messageMapper.findByBizIdAndIsDeleted(...);
for (Message message : messages) {
    message.setIsDeleted(StatusEnum.Del.getStatus());
    // ...
}
messageMapper.saveAll(messages);  // 使用批量更新

性能对比

场景 未启用批量 启用批量(batch_size=1000)
插入1000条记录 ~5000-10000ms ~1000-2000ms
更新1000条记录 ~3000-8000ms ~3000-600ms

参考链接

相关推荐
警醒与鞭策9 小时前
【无标题】
android·unity·性能优化·游戏引擎·perforce
JosieBook16 小时前
【数据库】MySQL 实战精通系列 · 第8篇:慢查询治理与性能优化实战
数据库·mysql·性能优化
CopyCode18 小时前
我排查了一下午,发现项目打包体积翻倍的元凶是它
前端·性能优化
the3clipse20 小时前
视频编码技术如何赋能游戏性能优化:从硬件隔离到AI驱动的带宽革命
游戏·性能优化·音视频·视频编码·硬件加速·ai编码·自适应编码
余槐i20 小时前
将AI Agent嵌入现有Java系统时,Spring Boot 3.2的异步冲突与内存泄漏排查
人工智能·spring boot·性能优化·kubernetes·ai agent
艺杯羹20 小时前
240GB流量击穿与频繁OOM:从云端瘫痪到客户端自治的本地优先架构重构实录
性能优化·系统架构·fastapi·桌面客户端·本地优先
天天喝旺仔21 小时前
浏览器渲染原理:从解析 HTML/CSS、构建渲染树到重排重绘与首屏优化
前端·javascript·css·性能优化·html
余槐i1 天前
-m 2g 反而更早 OOM:Docker 内存计数与宿主机空闲口径差异
java·linux·docker·性能优化·cgroup
打工仔折腾 AI1 天前
网易UU远程实测:手机控电脑做Python开发和Agent调试的真实体验
人工智能·后端·python·智能手机·性能优化·电脑·ai agent 实战