InnoDB 歷史記錄清單長度顯著增加 - Amazon Aurora

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

InnoDB 歷史記錄清單長度顯著增加

日期db-instance長度,針對資料列變更的歷史記錄清單長度皆顯著增加。這會影響查詢和資料庫關閉效能。

支援的引擎版本

所有版本的 Aurora MySQL 都支援此洞察資訊。

Context

InnoDB 交易系統會維護多版本並行控制 (MVCC)。修改資料列時,修改前的版本會在還原日誌中儲存為還原記錄。每個還原記錄都有對先前重做記錄的參照,進而形成一份連結清單。

InnoDB 歷史記錄清單是已提交交易的還原記錄全域清單。交易不再需要歷史記錄時,MySQL 會用歷史記錄清單來清除記錄和日誌頁面。歷史記錄清單長度是清單中所有修改項目的還原記錄總數。每個日誌都包含一個或多個修改項目。若 InnoDB 歷史記錄清單長度太長,表示該清單具有過多舊資料列版本,導致查詢和資料庫關閉變慢。

造成此問題的可能原因

歷史記錄清單過長的典型原因包括:

  • 長時間執行的交易 (讀取或寫入)

  • 繁重的寫入負載

動作

根據洞察的原因,我們會建議不同的動作。

在 InnoDB 歷史記錄清單減少之前,請不要開始任何涉及資料庫關閉的操作

InnoDB 歷史記錄清單過長會降低資料庫關閉速度,因此請在啟動涉及資料庫關閉的操作之前減少清單大小。這些操作包括主要版本資料庫升級。

找出並關閉長時間執行的交易

您可以透過查詢 information_schema.innodb_trx,找出長時間執行的交易。

注意

也請務必在僅供讀取複本上尋找長時間執行的交易。

若要找出並關閉長時間執行的交易
  1. 在您的 SQL 用戶端執行下列查詢:

    SELECT a.trx_id, a.trx_state, a.trx_started, TIMESTAMPDIFF(SECOND,a.trx_started, now()) as "Seconds Transaction Has Been Open", a.trx_rows_modified, b.USER, b.host, b.db, b.command, b.time, b.state FROM information_schema.innodb_trx a, information_schema.processlist b WHERE a.trx_mysql_thread_id=b.id AND TIMESTAMPDIFF(SECOND,a.trx_started, now()) > 10 ORDER BY trx_started
  2. 使用預存程序 結束每個長時間執行的交易mysql.rds_kill

使用績效詳情,找出最高主機和最高使用者。

最佳化交易,以立即遞交大量已修改的資料列。

相關指標

下列指標與此洞察相關:

  • trx_rseg_history_len – 此計數器指標可在績效詳情和INFORMATION_SCHEMA.INNODB_METRICS資料表中檢視。如需詳細資訊,請參閱 MySQL 文件中的 InnoDB INFORMATION_SCHEMA 指標表

  • RollbackSegmentHistoryListLength – 此 Amazon CloudWatch 指標會測量復原日誌,以使用刪除標記的記錄記錄遞交的交易。這些記錄已排程由 InnoDB 清除操作處理。指標trx_rseg_history_len具有與 相同的值RollbackSegmentHistoryListLength

  • PurgeBoundary – 允許 InnoDB 清除的交易號碼。如果此 CloudWatch 指標長時間沒有推進,則表示 InnoDB 清除被長時間執行的交易封鎖。若要調查,請檢查 Aurora MySQL 資料庫叢集上的作用中交易。此指標僅適用於 Aurora MySQL 2.11 版和更新版本,以及 3.08 版和更新版本。

  • PurgeFinishedPoint – 執行 InnoDB 清除的 交易編號。此 CloudWatch 指標可協助您檢查 InnoDB 清除的進度。此指標僅適用於 Aurora MySQL 2.11 版和更新版本,以及 3.08 版和更新版本。

  • TransactionAgeMaximum – 最舊的作用中執行中交易的存留期。此 CloudWatch 指標僅適用於 Aurora MySQL 3.08 版及更新版本。

  • TruncateFinishedPoint – 執行復原截斷的交易編號。此 CloudWatch 指標僅適用於 Aurora MySQL 2.11 版和更新版本,以及 3.08 版和更新版本。

如需 CloudWatch 指標的詳細資訊,請參閱Amazon Aurora 的執行個體層級指標