线上SQL超时场景分析-MySQL超时之间隙锁
前言之前遇到过一个由MySQL间隙锁引发线上sql执行超时的场景,记录一下。
背景说明
分布式事务消息表:业务上使用消息表的方式,依赖本地事务,实现了一套分布式事务方案
消息表名:mq_messages
数据量:3000多万
索引:create_time 和 status
status:有两个值,1 和 2, 其中99%以上的状态都是2,表示分布式事务全部已经执行完成,可以删除。
消息表处理逻辑:
1. 启动一个独立的定时任务,删除status=2的历史数据,具体的sql如下:
delete from mq_messages where create_time
页:
[1]