mysql使用 隨筆一

來源:互聯網
上載者:User

標籤:timeout   its   format   項目   也會   開始時間   innodb   行記錄   權重   

在練習項目中,沒有使用mysql行級鎖。而是通過rabbitmq隊列,使用庫存增加以及減少。通過顯示建立事務實現兩表更新資料。在測試過程中,多人操作訂單,導致出現事務鎖逾時,在MySQL命令列使用

show full processlist;

查到MySQL有很多update進程處於sleep中。可以判斷可能由於事務中的邏輯中斷或者代碼出錯後未關閉MySQL串連控制代碼導致,也就是事務鎖一直處於未關閉狀態。

 

相關資料:

show full processlist;

在沒有InnoDB Plugin之前使用,其很難發現被鎖行記錄問題所在,shou 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使用 隨筆一

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.