记一次Mysql死锁排查过程


场景:同事反馈给某表加索引时,数据库GUI卡死,N秒后界面显示

lock wait timeout exceeded; try restarting transaction

排查三剑客

select * from information_schema.innodb_locks; (当前出现的锁)

select * from information_schema.innodb_lock_waits; (锁等待的对应关系)

select * from information_schema.innodb_trx; (当前运行的所有事务)

大结局

最后发现在 innodb_trx的trx_query字段里有涉及到这张表,最后kill掉该行对应的 trx_mysql_thread_id,
解决问题。

结尾

最后顺便附上这三张表的表结构:
information_schema.innodb_locks

information_schema.innodb_lock_waits

information_schema.innodb_trx

声明:Codererrr's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 记一次Mysql死锁排查过程


Coding Changes The World