记一次锁表排查处理

前因

某条sql出现了报错
 Lock wait timeout exceeded; try restarting transaction 
不知道具体的啥问题

分析过程

MYSQL 查看锁表情况
查看事物情况//具体参考文档,发现有条事物执行很久了也没有提交估计是问题在这,并且锁了5张表(行锁),sql 无数据显示(是事物执行完了未提交)
select * from information_schema.INNODB_TRX;
查看锁等待情况 //由于是行锁,并且是事物 无数据
select * from performance_schema.data_lock_waits;
查看事物与锁分析//由于是行锁,并且是事物 无数据
SELECT waiting_trx_id,waiting_pid,waiting_query,blocking_trx_id,blocking_pid,blocking_query FROM sys.innodb_lock_waits;
事物未提交锁表查询//由于是行锁,并且是事物 无数据
select t1.id,t2.thread_id,t3.sql_text from 
information_schema.processlist t1,performance_schema.threads t2,performance_schema.events_statements_current t3 where t1.id=15692090 
and t1.id=t2.processlist_id and t2.thread_id = t3.thread_id

解决过程

1.一通分析发现然并卵。。。
2.由于采用的云数据库,开启了sql洞察
3.根据SQL洞察找到执行的时间点,发现有条sql报错了(插入)后续的提交没有了
一定要做好捕获异常呀兄弟们
4.由于还是队列服务,正常的错误报警并没有收到(自己做的错误监测,实时通信的那种😊)
5.找到出问题的位置解决,有个数据的变量没有设置插入的时候失败了😭
至此问题解决。。。
只要一直找,问题总能处理掉的

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容