第一種:
前提條件:找到執行非常慢的sql;
如何找呢:還原客戶遇到的問題場景,從控制台找到所執行的sql,一句句的去執行,直到找到執行非常慢的sql
1.查詢是否鎖表
show open tables where in_use > 0;
2.查詢程序(如果您有super許可權,您可以看到所有執行緒。否則,您只能看到您自己的執行緒)
show processlist
3.殺死程序id(就是上面命令的id列)
kill id
第二種:
1.檢視下在鎖的事務
select * from information_schema.innodb_trx;
2.殺死程序id(就是上面命令的trx_mysql_thread_id列)
kill 執行緒id
第三種:
也許你無法檢視到所在的info,這個時候你需要重啟伺服器,如果是分布式的話,就一台臺重啟吧;
原理是:殺死所有程序,釋放所有鎖。
mysql - 鎖等待超時與information_schema的三個表:
-- 1.information_schema.innodb_trx–當前執行的所有事務
select * from information_schema.innodb_trx;
-- information_schema.innodb_locks–當前出現的鎖
select * from information_schema.innodb_locks;
-- information_schema.innodb_lock_waits–鎖等待的對應關係
select * from information_schema.innodb_lock_waits;
//常用
select * from information_schema.innodb_trx where trx_state = 'lock wait';
kill trx_mysql_thread_id(對應具體的執行緒id);
select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx ;
原文出處:
mysql 解除正在死鎖的狀態
解除正在死鎖的狀態有兩種方法 第一種 1.查詢是否鎖表 show open tables where in use 0 2.查詢程序 如果您有super許可權,您可以看到所有執行緒。否則,您只能看到您自己的執行緒 show processlist show processlist 只列出前100條,...
mysql 死鎖語句 MySQL死鎖
死鎖產生 行鎖的具體實現演算法有三種 record lock gap lock以及next key lock。record lock是專門對索引項加鎖 gap lock是對索引項之間的間隙加鎖 next key lock則是前面兩種的組合,對索引項及其之間的間隙加鎖。只在可重複讀或以上隔離級別下的特...
mysql事務死鎖 MySQL事務 死鎖
一 概念 多個事務在同一資源上互相占用形成迴路。這就是死鎖 基本命令 檢視是否自動提交事務 show variables like autocommit 設定事務是否自動提交 set autocommit 0 set autocommit 1 二 例子 create table user id bi...