- 之前在运行Mysql任务的时候报错:binlog(1610646347 bytes) write threshold exceeded,
- 问题原因是Mysql任务提交的是个大事务,超出binlog设定阈值,使得系统自动终止事务
- Mysql中的每条记录在更新的时候都会记录一条回滚操作,同一记录在系统中可存在多个版本,导致Mysql的回滚日志越来越大,不过回滚日志会进行删除,Mysql会删除比较老的回滚日志,如果是大事务的话,一直不提交,相当于系统里有很多老的任务视图无法删数,就导致了binlog溢出,同时,大事务还会造成锁冲突,甚至拖垮数据库
一、解决方案
- 使用limit分页拆分大事务
- limit x,y表示从第x行开始往后偏移y行
- 使用while循环遍历数据量按照偏移量拆分
CREATE PROCEDURE `split_trans`()