MySQL 长事务是什么?有什么危害?怎么避免?
长事务:执行时间长、未及时提交的事务。危害:① 锁持有久,阻塞其他事务(并发下降);② undo log 无法清理,回滚段膨胀(占用空间、MVCC 版本链变长拖慢查询);③ 主从复制延迟(binlog 集中提交);④ 崩溃恢复耗时长。避免:① 事务内只做必要操作,避免慢查询/远程调用/循环更新;② 及时 COMMIT(小事务化,如批量插入分批提交);③ 监控:information_schema.innodb_trx 查长事务告警;④ 设置 innodb_lock_wait_timeout、max_execution_time;⑤ 代码 review 事务边界。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。