记一次mysql数据库死锁排查
症状:进行表的ddl操作时,一直在loading,等待响应
怀疑锁表,查询进程表,发起的语句在等待被锁表
# show processlist;
进一步明确当前被锁定的表
# show open tables where in_use > 0;
果然是目标表
参考:https://blog.csdn.net/songxi_bo/article/details/121700745
优先检查是否有事务操作未提交
# select * from information_schema.innodb_trx;
找到确实有事务未提交,找到对应的进程id
回到进程表,找到目标进行,后续对该机器上的应用进行分析,这里要先关闭它
# show processlist;
# kill 1181;
删除后,ddl语句执行成功
后记:后续通过定位机器,找到对应的程序,仔细排查代码后,发现是该应用未及时释放connection导致,查询后释放就解决该问题。