先说结论,在讲过程
环境: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、 开启多个线程方式去处理数据
能优化的几个方向
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