View a markdown version of this page

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

動作

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

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

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

在 中檢視最高 SQL 圖表 AWS 管理主控台
  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 交易管理。