前因
某条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.找到出问题的位置解决,有个数据的变量没有设置插入的时候失败了😭
至此问题解决。。。
只要一直找,问题总能处理掉的
网友评论