JDBC提高mysql入库的效率!

通过关闭自动提交机制,将数据库操作批量提交,成功将执行时间从160380ms缩短至5497ms,展示了批量提交对数据库性能优化的影响。

5650条记录,解析加入库居然要160380ms

鬼精灵说他都没用过什么批处理,就是每1w条commit一次。

好吧,那就试试看


改成con.setAutoCommit(false);不自动提交;

时间缩短为:execute time:5497ms


别忘了,con.commit();


Spring Boot 提高数据入库效率是一个常见的需求,特别是在处理大量数据插入、更新等操作时。以下是几种优化策略: ### 1. 批量操作 批量提交可以显著减少数据库连接的次数和事务管理的成本。 - **JPA** 或者 **MyBatis** 等持久层框架都支持批量插入/更新功能。比如,在 JPA 中你可以通过 `EntityManager` 的 `persist()` 和 `flush()` 方法组合使用来进行批量保存。 ```java // 使用 Hibernate 的 SessionFactory 进行批量插入的例子 for (int i = 0; i < entities.size(); ++i) { session.save(entities.get(i)); if (i % batchSize == 0) { // 每到一定的数量就刷新缓存并清理状态 session.flush(); session.clear(); } } ``` ### 2. 数据库配置调整 合理的数据库配置能够提高性能: - 调整 MySQL Innodb 缓冲池大小 (`innodb_buffer_pool_size`); - 合理设置 JDBC 连接池的最大活跃数、最小空闲数以及最大等待时间等参数。 ### 3. 减少不必要的 ORM 映射开销 对于不需要完整实体映射的情况下,考虑直接采用 SQL 查询代替复杂的 HQL / JPQL;另外也可以选择只加载必要的字段而非整个对象图。 ### 4. 并发异步处理 当有较多独立的数据需要存储时,并发地执行任务能加快整体速度。例如利用 Java8+ 特性的 CompletableFuture 来实现非阻塞式的服务调用。 --- 此外,还需要注意业务场景的特点来综合评估上述方案的效果。同时也要记得监控系统的实际运行状况,以便及时发现问题所在并作出相应改进措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值