本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
synch/mutex/innodb/trx_sys_mutex
由於大量交易而有高資料庫活動時,synch/mutex/innodb/trx_sys_mutex
事件便會發生。
相關的引擎版本
下列引擎版本支援這個等待事件資訊:
-
Aurora MySQL 第 2 版和第 3 版
Context
在內部,InnoDB 資料庫引擎會使用可重複讀取隔離層級搭配快照,來提供讀取一致性。這可讓您在 point-in-time建立快照時檢視資料庫。
在 InnoDB 中,所有變更一到達就會套用到資料庫,無論是否已遞交它們。這種方法表示,如果沒有多版本並行控制 (MVCC),所有連接到資料庫的使用者都會看到所有變更和最新的資料列。因此,InnoDB 需要一種方法來追蹤變更,以了解在必要時要復原什麼。
若要這樣做,InnoDB 會使用交易系統 (trx_sys
) 來追蹤快照。交易系統會執行下列動作:
-
追蹤復原日誌中每個資料列的交易 ID。
-
使用名為 的內部 InnoDB 結構
ReadView
,協助識別快照IDs可看見哪些交易。
等待時間增加的可能原因
任何需要一致且受控處理 (建立、讀取、更新和刪除) 交易的資料庫操作都會從 IDs 產生trx_sys
對 mutex 的呼叫。
這些呼叫發生在三個函數內:
-
trx_sys_mutex_enter
– 建立互斥。 -
trx_sys_mutex_exit
– 釋放互斥。 -
trx_sys_mutex_own
– 測試是否擁有互斥。
InnoDB 效能結構描述檢測會追蹤所有 trx_sys
互斥呼叫。追蹤包括但不限於在資料庫啟動或關閉時管理 trx_sys
、復原作業、復原清除、資料列讀取存取,以及緩衝集區載入。具有大量交易的高資料庫活動會導致 synch/mutex/innodb/trx_sys_mutex
出現在最高等待事件之間。
如需詳細資訊,請參閱 MySQL 文件中的使用效能結構描述監控 InnoDB Mutex 等待
動作
根據等待事件的原因,我們會建議不同的動作。
識別造成事件的工作階段和查詢
通常,具有中等至重大負載的資料庫會有等待事件。如果效能是最佳的,則等待事件可能是可以接受的。如果效能不是最佳的,則檢查資料庫在何處花費最多時間。查看導致最高負載的等待事件。了解您是否可以最佳化資料庫和應用程式,以減少這些事件。
在 中檢視頂端SQL圖表 AWS Management Console
在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/
。 -
在導覽窗格中,選擇 Performance Insights (績效詳情)。
-
選擇資料庫執行個體。即會顯示該資料庫執行個體的績效詳情儀表板。
-
在 Database load (資料庫負載) 圖表中,選擇 Slice by wait (依等待建立配量)。
-
在資料庫負載圖表下,選擇前 SQL。
圖表列出負責載入的SQL查詢。位於清單頂端者負最大責任。若要解決瓶頸,請專注於這些陳述式。
如需使用績效詳情進行故障診斷的實用概觀,請參閱部落格文章 使用績效詳情分析 Amazon Aurora MySQL Workloads
檢查其他等待事件
檢查與 synch/mutex/innodb/trx_sys_mutex
等待事件相關聯的其他等待事件。執行此動作可提供工作負載本質的詳細資訊。大量的交易可能會減少輸送量,但工作負載也可能使此變得必要。
如需如何最佳化交易的詳細資訊,請參閱 MySQL 文件中的最佳化 InnoDB 交易管理