一、查詢是否鎖表
show OPEN TABLES where In_use > 0;
設置手動提交事務
set @@autocommit=0;
用for update鎖住一條數據
START transaction ;
SELECT * from user WHERE id=1 for update;
再執行查詢是否鎖表命令
show OPEN TABLES where In_use > 0;
可以看到有一個表正在鎖定中
二、查看進程
show processlist
可以看到有個查詢語句正在執行
三、查看在鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
四、殺死進程(實測kill 兩次id才能成功殺掉進程 kill一次之後再執行show processlist 出現了新的id)
kill id
五、其它查看死鎖命令
- 查看當前的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
- 查看當前等鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;