1、排查業務端
1)業務是否確實需要使用長事務
比如:刪除不必要的唯讀事務。
2)對使用長事務的**檢測是否有自動提交事務(可在mysql的general_log中檢視是否開啟);
注意:最好在業務功能測試時輸出general_log,分析日誌行為提前發現問題。
自動提交-setautocommit=1;
檢視是否開啟事務:
3)確實需要的,需確認 業務端 是否設定執行時間,對事務超時異常是否有處理
2、排查資料端
1)監控information_schema.innodb_trx 表,設定長事務閾值,超過就報警或者kill
排查表:innodb_trx、innodb_locks、innodb_lock_waits
參考文件:
2)percona的pt-kill工具
從show processlist 中讀取滿足條件的連線執行操作。
參考文件:percona-
3)使用mysql5.6或更新版本時,可設定innodb_undo_tablespaces設定成2(或更大的值),方便大事務回滾段清理。
MySQL長事務處理辦法
長事務 long lived transactions 顧名思義,就是執行時間較長的事務。在innodb中可以查詢到當前執行中的事務。select from information schema.innodb trx 在訪問表時,innodb會自動給加上元資料鎖 meta data lock,mdl...
mysql長事務查詢 智庫 資料庫長事務詳解
在資料庫的日常維護中,我們常常會聽說資料庫 長事務 這個詞,那麼何為長事務?長事務是如何產生的?長事務對資料庫有什麼影響?如何防止長事務的產生?本文就根據筆者的運維經驗談談對資料庫長事務的理解。1 什麼是事務 事務是關係型資料庫中的乙個邏輯工作單元,它由乙個或多個sql語句組成,這些語句要麼全都執行...
MySQL的事務的處理
步驟 1.開啟事務 start transaction 當我們開啟乙個事務的時候,我們對sql的操作都發生在記憶體中,但是沒有真正的反饋到資料庫磁碟的檔案中!2.回滾 rollback 回滾,就是恢復到事務開啟之前的最原始的狀態!注意 回滾操作會自動的關閉乙個事務,如果想再次執行事務,需要重新開啟事...