溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分辨MySQL中的死鎖和鎖等待

發(fā)布時間:2021-09-13 18:28:11 來源:億速云 閱讀:102 作者:柒染 欄目:MySQL數據庫

這篇文章給大家介紹如何分辨MySQL中的死鎖和鎖等待,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

【數據庫版本】MySQL5.7

程序報錯1205 Lock wat timeout exceeded,以為是deadlock,其實是兩個概念,說明死鎖監(jiān)控模塊是沒問題的。死鎖監(jiān)控到的是死鎖,而不是鎖等待。

報錯信息如下:

SQLSTATEHY000]:General error: 1205 Lock wat timeout exceeded; try restarting transaction (SQL: UPDATE xx set xxx = 100 where id=1 and rock_id > 1) 

1213 Deadlock found when trying to get lock; try restarting transaction

https://www.cnblogs.com/tartis/p/9366574.html

https://dev.mysql.com/doc/refman/8.0/en/innodb-deadlock-example.html

MySQL 5.7我們可以通過下面語句查詢鎖狀態(tài)信息

SELECT 
  r.trx_id waiting_trx_id,
  r.trx_mysql_thread_id waiting_thread,
  r.trx_query waiting_query,
  b.trx_id blocking_trx_id,
  b.trx_mysql_thread_id blocking_thread,
  b.trx_query blocking_query 
FROM
  information_schema.`INNODB_LOCK_WAITS` w 
  INNER JOIN information_schema.`INNODB_TRX` b 
    ON b.`trx_id` = w.`blocking_trx_id` 
  INNER JOIN information_schema.`INNODB_TRX` r 
    ON r.`trx_id` = w.`requesting_trx_id`;

MySQL8.0 我們通過如下語句查看鎖信息

select * from x$innodb_lock_waits;

關于如何分辨MySQL中的死鎖和鎖等待就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI