MySQL死鎖排查

2022-05-27 14:15:10 字數 556 閱讀 3886

答:

1)檢視當前事務中是否有鎖資訊:

select trx_id,trx_state,trx_started,trx_requested_lock_id,trx_weight from innodb_trx;
2)檢視鎖資訊(表鎖or行鎖,鎖的那張表)

select lock_id,lock_trx_id,lock_mode,lock_type,lock_table,lock_index from innodb_locks;
3)檢視鎖在等待那些事務

select * from innodb_lock_waits;
如何避免死鎖發生

減小事務的大小,盡量分割。

mysql 預設隔離級別是 可重複讀,會產生間隙鎖,增加死鎖的概率,對應解決方法,修改為 提交讀級別,此時binlog日誌格式必須設定為 row 避免產生主從資料不一致。

檢視具體產生死鎖的sql,優化sql 避免產生全表掃瞄,該加索引加索引。

MySQL死鎖排查

死鎖查詢方式 1 檢視當前事務中是否有鎖資訊 select trx id,trx state,trx started,trx requested lock id,trx weight from innodb trx 2 檢視鎖資訊 表鎖or行鎖,鎖的那張表 select lock id,lock t...

mysql死鎖排查過程

即lock wait timeout exceeded try restarting transaction的異常,錯誤提示的意思,很明顯,是因為這條語句被鎖住了,所以釋放這個鎖。解決方案 我們可以通過到information schema中來進行查詢被鎖的語句。解釋 information sch...

使用jstact排查死鎖

1 死鎖定義 死鎖測試 public class deadlocksample extends thread public void run catch interruptedexception e public static void main string args throws interru...