锁表问题排查

mysql会自动检测死锁,并自动kill后枷锁的链接,这样使得mysql很少出现由于死锁导致业务挂死问题,但如果某个事物长期枷锁,或因为某些其他原因导致锁表,就需要手动处理。

1、查看被锁住的事务

SELECT * from information_schema.INNODB_LOCKS;

 2、查看哪些是等待的事务

SELECT * from information_schema.INNODB_LOCK_WAITS;

 3、根据事务id查看事务线程id

SELECT * from information_schema.INNODB_TRX;

 同时也可以查看所有的链接的情况

SHOW PROCESSLIST;

4、杀死加锁进程

kill 384403;

5、最后通过java异常日志到代码中寻找发生长时间被加锁的问题。

随笔看心情
原文地址:https://www.cnblogs.com/stromgao/p/13572281.html