mysql 批量执行update语句最佳方案思考
来源:互联网 发布:sql选取第一行 编辑:程序博客网 时间:2024/05/21 18:31
最近运维问了我一个问题,mysql批量执行一万多条update,如何做才能把风险和损失做到最低?
这个问题,我没有直接回答,因为我也没有类似的经历。于是搜集资料得出结论如下。
mysql 默认是autocommit=on也就是默认开启自动提交事务。这种情况下,一条sql就会开启一个事务,这时候同时执行一万条update,就会导致实际开启一万个事务,然后挨个执行,挨个开启,挨个提交。
缺点:同时锁住数据较少,但是数据库资源占用严重,对外提供操作性能急剧下降。当autocommit=off时,同时执行一万条update,那么只会开启一个事务,等到所有都update后,一并commit。
缺点:同时锁住数据较多,外面的select进不来,大量连接等待获取行锁,同样影响数据库对外服务能力。
最终优化方案:建议,把autocommit设置off,然后执行update的时候,手动分批commit,分批条数限制100,或者200,比如一万条update,按照每100条 就commit一次,10000个update总共需要100个事务,每次锁住100条数据。性能将会得到很大提升。
当然,选择多少条手动commit,这个需要根据各自业务实际情况而定。
相关测试数据,正在验证ing!~~如有理解不当的地方,也欢迎各位给出宝贵建议和指点!
0 0
- mysql 批量执行update语句最佳方案思考
- MySQL批量update语句优化
- mysql批量update语句优化
- MySQL批量update语句优化
- 批量执行mysql语句.
- mysql语句的批量执行
- MySQL批量执行sql语句
- PHP执行批量mysql语句
- mybatis批量执行mysql的update操作
- mysql执行两条update语句
- mysql批量执行文件中的SQL语句
- 利用mysql客户端批量执行sql语句
- sql批量update语句
- mysql 批量更新语句 INSERT ON DUPLICATE KEY UPDATE
- Update语句执行原理
- mysql 批量update
- mysql mybatis 批量update
- mysql批量update
- Azure 上通过 SendGrid 发送邮件
- 全面解析Hibernate框架--小白必看3
- 手机/移动前端开发需要注意的20个要点
- 时区设置相关
- AJAX协议传输,并调取数据库返回值
- mysql 批量执行update语句最佳方案思考
- AngularJS ocLazyLoad按需加载控制器/js文件的延迟加载(一)
- c operate time
- Android自动打包工具aapt详解
- git 常见报错解决方法
- CentOS添加环境变量
- angularJS-指令与控制器之间的交互--“鼠标经过事件”如图所示
- 玩转Android之MVVM开发模式实战,炫酷的DataBinding!
- python进程类subprocess的一些操作方法例子