锁表问题排查

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异常日志到代码中寻找发生长时间被加锁的问题。

posted @ 2020-08-27 16:39  二次元的程序猿  阅读(509)  评论(0编辑  收藏  举报