mysql死結,等待資源,事務鎖,Lock wait timeout exceeded; try restarting transaction解決

來源:互聯網
上載者:User

標籤:

前面已經瞭解了InnoDB關於在出現鎖等待的時候,會根據參數innodb_lock_wait_timeout的配置,判斷是否需要進行timeout的操作,本文檔介紹在出現鎖等待時候的查看及分析處理;

在InnoDB Plugin之前,一般通過show full processlist(很難發現被鎖的行記錄問題所在)和show engine innodb status命令查看當前的資料庫請求,然後再判斷當前事務中鎖的情況。隨著mysql的發展,已經提供更加便捷的方法來監控資料庫中的鎖等待現象了。

在information_schema下面有三張表:INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITS(解決問題方法),通過這三張表,可以更簡單地監控當前的事務並分析可能存在的問題。

比較常用的列:

trx_id:InnoDB儲存引擎內部唯一的事物ID
trx_status:當前事務的狀態
trx_status:事務的開始時間
trx_requested_lock_id:等待事務的鎖ID
trx_wait_started:事務等待的開始時間
trx_weight:事務的權重,反應一個事務修改和鎖定的行數,當發現死結需要復原時,權重越小的值被復原
trx_mysql_thread_id:MySQL中的進程ID,與show processlist中的ID值相對應
trx_query:事務啟動並執行SQL語句

kill 進程ID;  工作中遇到了一條車輛記錄,select * from car for update 或者是修改某個欄位的值,就報錯:Lock wait timeout exceeded; try restarting transaction解決方案,另外從根本上從商務邏輯代碼最佳化對資料庫的操作,之前也遇到過此類情況,比如剛剛修改完這條記錄,接著再次修改,也會報此錯誤,從代碼和業務層面盡量避免開來。

 

mysql死結,等待資源,事務鎖,Lock wait timeout exceeded; try restarting transaction解決

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.