synch/mutex/innodb/trx_sys_mutex - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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
  1. 在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/

  2. 在導覽窗格中,選擇 Performance Insights (績效詳情)。

  3. 選擇資料庫執行個體。即會顯示該資料庫執行個體的績效詳情儀表板。

  4. Database load (資料庫負載) 圖表中,選擇 Slice by wait (依等待建立配量)。

  5. 資料庫負載圖表下,選擇前 SQL

    圖表列出負責載入的SQL查詢。位於清單頂端者負最大責任。若要解決瓶頸,請專注於這些陳述式。

如需使用績效詳情進行故障診斷的實用概觀,請參閱部落格文章 使用績效詳情分析 Amazon Aurora MySQL Workloads

檢查其他等待事件

檢查與 synch/mutex/innodb/trx_sys_mutex 等待事件相關聯的其他等待事件。執行此動作可提供工作負載本質的詳細資訊。大量的交易可能會減少輸送量,但工作負載也可能使此變得必要。

如需如何最佳化交易的詳細資訊,請參閱 MySQL 文件中的最佳化 InnoDB 交易管理