mysql查看死鎖和解鎖

一、查詢是否鎖表

show OPEN TABLES where In_use > 0;

1.jpg

設置手動提交事務

set @@autocommit=0;

用for update鎖住一條數據

START transaction ;

SELECT * from user WHERE id=1 for update; 

再執行查詢是否鎖表命令

show OPEN TABLES where In_use > 0;

可以看到有一個表正在鎖定中

2.jpg

二、查看進程

show processlist

可以看到有個查詢語句正在執行

3.jpg

三、查看在鎖的事務

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

1.jpg

四、殺死進程(實測kill 兩次id才能成功殺掉進程 kill一次之後再執行show processlist 出現了新的id)

kill id

5.jpg

五、其它查看死鎖命令

  1. 查看當前的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
  1. 查看當前等鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章