死鎖查詢方式:
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;
如何避免死鎖發生
1、減小事務的大小,盡量分割。
2、mysql 預設隔離級別是 可重複讀,會產生間隙鎖,增加死鎖的概率,對應解決方法,修改為 提交讀級別,此時binlog日誌格式必須設定為 row 避免產生主從資料不一致。
3、檢視具體產生死鎖的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 trx id...
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...