批量插入更新效率问题

 先说结论,在讲过程

环境:mybaits + mysql

结论:

1、一次更新数量最好在50-100,用foreach方式更新,可以参考这个的写法

https://blog.csdn.net/xyjawq1/article/details/74129316

2、批量插入一般在5000条插入一次,大于5000后mysql的性能下降 ,当插入次数由200逐渐提升到5000过程,速度变快,不过不明显

3、batch方式批处理

3.1 bacth不能处理批量插入自增主键的方式

3.2 batch每次处理1000,500,200,100 结果时间没有太大区别

3.3 batch批处理方式不如上面那种运用数据库计算的方式来的快

4、 开启多个线程方式去处理数据

扫描二维码关注公众号,回复: 1587805 查看本文章

能优化的几个方向

1、不要在for里面加入与数据库的交互

2、加入redis缓存(或其他缓存)获取常量,如果数量级过小,没有必要(10W级别,没有必要)

3、插入和更新的语句单独写,去掉所有多余的判断,字段等

4、 max_allowed_packet 不要设置过大,20M足够了,如果你的sql单次还超过了这个数量,那么需要for循环处理,不能一次处理过大的sql,危险


过程:

批处理,方式方法研究了2天,包括表单验证等业务逻辑

后来优化,想办法又做了2天

https://blog.csdn.net/m0_37981235/article/details/79131493

https://bbs.csdn.net/topics/390531875


猜你喜欢

转载自blog.csdn.net/pengjj1223/article/details/80180291