synch/mutex/innodb/fil_mutex - Amazon Aurora

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

synch/mutex/innodb/fil_mutex

由於大量交易而有高資料庫活動時,synch/mutex/innodb/trx_sys_mutex 事件便會發生。

相關的引擎版本

下列引擎版本支援這個等待事件資訊:

  • Aurora MySQL 2 版和 3 版

Context

在內部,InnoDB 資料庫引擎會使用可重複讀取隔離層級搭配快照,來提供讀取一致性。這可為您提供在建立快照時資料庫的時間點檢視。

在 InnoDB 中,所有變更一到達就會套用到資料庫,無論是否已遞交它們。這種方法表示,若沒有多版本並行控制 (MVCC),連線到資料庫的所有使用者都會看到所有的變更和最新的資料列。因此,InnoDB 需要一種方法來追蹤變更,以了解在必要時要復原什麼。

若要這樣做,InnoDB 會使用交易系統 (trx_sys) 來追蹤快照。交易系統會執行下列動作:

  • 追蹤復原日誌中每個資料列的交易 ID。

  • 使用名為 ReadView 的內部 InnoDB 結構,其有助於識別快照可以看到哪些交易 ID。

等待變多的可能原因

以一致且受控方式處理 (建立、讀取、更新和刪除) 交易 ID 的任何資料庫作業都會從 trx_sys 產生對互斥的呼叫。

這些呼叫發生在三個函數內:

  • 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 互斥等待

動作

根據等待事件的原因,我們會建議不同的動作。

識別造成事件的工作階段和查詢

通常,具有中等至重大負載的資料庫會有等待事件。如果效能是最佳的,則等待事件可能是可以接受的。如果效能不是最佳的,則檢查資料庫在何處花費最多時間。查看導致最高負載的等待事件。了解您是否可以最佳化資料庫和應用程式,以減少這些事件。

檢視 AWS 管理主控台 中的最高 SQL 圖表
  1. 前往 https://console.aws.amazon.com/rds/,開啟 Amazon RDS 主控台。

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

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

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

  5. Database load (資料庫負載) 圖表下,選擇 Top SQL (最高 SQL)。

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

如需使用績效詳情進行疑難排解的實用概觀,請參閱部落格文章利用績效詳情分析 Amazon Aurora MySQL 工作負載

檢查其他等待事件

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

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