问题背景
某天测试功能时,发现有些功能一直在loading,查看日志后发现,涉及到
sample_express
表的所有DML语句都执行不了,然后在一段时间后抛出异常:Lock wait timeout exceeded; try restarting transaction
。
排查过程
-
首先查看
information_schema.INNODB_TRX
表,查看当前事务和状态,是否有长时间执行或者等待锁的事务;如果有查看其进程ID;
-
执行
kill [thx_thread_id]
命令,结束该事务进程。
相关知识
Mysql5.5中,information_schema库中增加了三个关于锁的表(MEMORY引擎):
- innodb_trx :当前运行的所有事务
- innodb_locks: 当前出现的锁
- innodb_lock_waits: 锁等待的对应关系