查看show processlist full
如果是sleep导致查找起来不方便, 可以(MySQL 启动时需要设置 performance_schema=on,相比于设置为 off 会有 10% 左右的性能损失), 通过查询 sys.schema_table_lock_waits 这张表,我们就可以直接找出造成阻塞的 process id,把这个连接用 kill 命令断开即可
select blocking_pid from sys.schema_table_lock_waits;
死锁
怎么查出是谁占着这个写锁。如果你用的是 MySQL 5.7 版本,可以通过 sys.innodb_lock_waits 表查到。
mysql> select * from t sys.innodb_lock_waits where locked_table='`test`.`t`'\G
不要kill query , 那样可能kill的不是占用锁的语句, 可能是 update下一行的select
kill 连接