mysql死鎖後狀態 mysql如何解除死鎖狀態

2021-10-18 11:38:25 字數 1132 閱讀 2861

第一種:

前提條件:找到執行非常慢的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...