

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

# Aurora MySQL 等待事件
<a name="AuroraMySQL.Reference.Waitevents"></a>

以下是 Aurora MySQL 的一些常見等候事件。

**注意**  
如需詳細了解使用等待事件調整 Aurora MySQL 效能，請參閱 [使用等待事件調校 Aurora MySQL](AuroraMySQL.Managing.Tuning.wait-events.md)。  
如需關於用於 MySQL 等候事件的命名慣例資訊，請參閱 MySQL 文件中的[效能結構描述工具命名慣例](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-instrument-naming.html)。

**cpu**  
準備好執行的作用中連線數量一致高於 vCPU 的數量。如需詳細資訊，請參閱[cpu](ams-waits.cpu.md)。

**io/aurora\$1redo\$1log\$1flush**  
工作階段正在將資料保留至 Aurora 儲存體。一般而言，此等候事件是供 Aurora MySQL 的寫入輸入/輸出操作使用的。如需詳細資訊，請參閱[io/aurora\$1redo\$1log\$1flush](ams-waits.io-auredologflush.md)。

**io/aurora\$1respond\$1to\$1client**  
查詢處理已完成，並將結果傳回至下列 Aurora MySQL 版本的應用程式用戶端：2.10.2 及更高的 2.10 版本、2.09.3 及更高的 2.09 版本，以及 2.07.7 及更高的 2.07 版本。將資料庫執行個體類別的網路頻寬與傳回的結果集大小進行比較。此外，請檢查用戶端回應時間。如果用戶端沒有回應，而且無法處理 TCP 封包，則可能會發生封包捨棄和 TCP 重新傳輸。這種情況會對網路頻寬造成負面影響。在低於 2.10.2、2.09.3 和 2.07.7 的版本中，等待事件錯誤地包含閒置時間。若要了解如何在此等待重要時調整資料庫，請參閱 [io/aurora\$1respond\$1to\$1client](ams-waits.respond-to-client.md)。

**io/file/csv/data**  
執行緒正在以逗號分隔值 (CSV) 格式寫入資料表。檢查您的 CSV 資料庫使用量。此事件通常是因為資料表上設定 `log_output`。

**io/file/sql/binlog**  
執行緒正在等待將寫入至磁碟的二進位日誌 (binlog) 檔案。

**io/redo\$1log\$1flush**  
工作階段正在將資料保留至 Aurora 儲存體。一般而言，此等候事件是供 Aurora MySQL 的寫入輸入/輸出操作使用的。如需詳細資訊，請參閱[io/redo\$1log\$1flush](ams-waits.io-redologflush.md)。

**io/socket/sql/client\$1connection**  
`mysqld` 程式忙於建立執行緒來處理傳入的新用戶端連線。如需詳細資訊，請參閱[io/socket/sql/client\$1connection](ams-waits.client-connection.md)。

**io/table/sql/handler**  
引擎正在等待存取資料表。無論是在緩衝集區中快取資料，還是在磁碟上存取資料，都會發生此事件。如需詳細資訊，請參閱[io/table/sql/handler](ams-waits.waitio.md)。

**lock/table/sql/handler**  
此等候事件是一個資料表鎖定事件處理常式。如需效能結構描述中原子和分子事件的相關資訊，請參閱 MySQL 文件中的[效能結構描述原子與分子事件](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-atom-molecule-events.html)。

**synch/cond/innodb/row\$1lock\$1wait**  
多個資料處理語言 (DML) 陳述式正在同時存取相同的資料庫資料列。如需詳細資訊，請參閱[synch/cond/innodb/row\$1lock\$1wait](ams-waits.row-lock-wait.md)。

**synch/cond/innodb/row\$1lock\$1wait\$1cond**  
多個 DML 陳述式正在同時存取相同的資料庫資料列。如需詳細資訊，請參閱[synch/cond/innodb/row\$1lock\$1wait\$1cond](ams-waits.row-lock-wait-cond.md)。

**synch/cond/sql/MDL\$1context::COND\$1wait\$1status**  
執行緒正在等待資料表中繼資料鎖定。引擎使用這種類型的鎖定來管理資料庫結構描述的並行存取，並確保資料一致性。如需詳細資訊，請參閱 MySQL 文件中的[最佳化鎖定操作](https://dev.mysql.com/doc/refman/8.0/en/locking-issues.html)。若要了解如何在此事件重要時調整資料庫，請參閱 [synch/cond/sql/MDL\$1context::COND\$1wait\$1status](ams-waits.cond-wait-status.md)。

**synch/cond/sql/MYSQL\$1BIN\$1LOG::COND\$1done**  
您已開啟二進位日誌。可能有很高的遞交輸送量、大量交易遞交，或複本讀取 Binlog。考慮使用多列陳述式或將陳述式綁定成一個交易。在 Aurora 中，使用全域資料庫而非二進位日誌複寫，或使用 `aurora_binlog_*` 參數。

**synch/mutex/innodb/aurora\$1lock\$1thread\$1slot\$1futex**  
多個 DML 陳述式正在同時存取相同的資料庫資料列。如需詳細資訊，請參閱[synch/mutex/innodb/aurora\$1lock\$1thread\$1slot\$1futex](ams-waits.waitsynch.md)。

**synch/mutex/innodb/buf\$1pool\$1mutex**  
緩衝集區不夠大，無法容納工作資料集。或者，工作負載會從特定資料表存取頁面，這會導致緩衝集區中的爭用。如需詳細資訊，請參閱[synch/mutex/innodb/buf\$1pool\$1mutex](ams-waits.bufpoolmutex.md)。

**synch/mutex/innodb/fil\$1mutex**  
程序正在等待存取資料表空間記憶體快取。如需詳細資訊，請參閱[synch/mutex/innodb/fil\$1mutex](ams-waits.innodb-fil-system-mutex.md)。

**synch/mutex/innodb/fil\$1mutex**  
作業是以一致或控制方式在 InnoDB 中檢查、更新、刪除或新增交易 ID。這些作業需要 `trx_sys` 互斥呼叫，這是由效能結構描述偵測來追蹤。作業包括在資料庫啟動或關閉時管理交易系統、回復、復原清除、資料列讀取存取，以及緩衝集區載入。具有大量交易的高資料庫負載會導致此等待事件頻繁出現。如需詳細資訊，請參閱[synch/mutex/innodb/fil\$1mutex](ams-waits.trxsysmutex.md)。

**synch/mutex/mysys/KEY\$1CACHE::cache\$1lock**  <a name="key-cache.cache-lock"></a>
`keycache->cache_lock` 互斥鎖定可控制對 MyISAM 資料表之索引鍵快取的存取。雖然 Aurora MySQL 不允許使用 MyISAM 資料表來存放持久性資料，但它們是用來存放內部暫存資料表。請考慮檢查 `created_tmp_tables` 或 `created_tmp_disk_tables` 狀態計數器，因為在某些情況下，暫存資料表會在不再容納於記憶體時寫入至磁碟。

**synch/mutex/sql/file \$1A\$1table:: LOCK\$1Offset**  
開啟或建立資料表中繼資料檔案時，引擎會取得此互斥。當這個等待事件過於頻繁發生時，表示正在建立或開啟的資料表數目已爆增。

**synch/mutex/sql/FILE\$1AS\$1TABLE::LOCK\$1shim\$1lists**  
在追蹤所開啟資料表的內部結構上執行 `reset_size`、`detach_contents` 或 `add_contents` 之類的作業時，引擎會取得此互斥。互斥會同步對清單內容的存取。當這個等待事件頻繁發生時，它表示先前存取的資料表集突然變更。引擎需要存取新的資料表或放下與先前存取之資料表相關的內容。

**synch/mutex/sql/LOCK\$1open**  
工作階段正在開啟的資料表數目超過資料表定義快取或資料表開啟快取的大小。增加這些快取的大小。如需詳細資訊，請參閱 [MySQL 如何開啟及關閉資料表](https://dev.mysql.com/doc/refman/8.0/en/table-cache.html)。

**synch/mutex/sql/LOCK\$1table\$1cache**  
工作階段正在開啟的資料表數目超過資料表定義快取或資料表開啟快取的大小。增加這些快取的大小。如需詳細資訊，請參閱 [MySQL 如何開啟及關閉資料表](https://dev.mysql.com/doc/refman/8.0/en/table-cache.html)。

**synch/mutex/sql/LOG**  
在此等候事件中，執行緒正在等待日誌鎖定。例如，一個執行緒可能會等待鎖定寫入至慢查詢日誌檔案。

**synch/mutex/sql/MYSQL\$1BIN\$1LOG::LOCK\$1commit**  
在此等候事件中，有一個執行緒正在等候取得欲提交至二進位日誌的鎖定。在具有非常高度變動率的資料庫上可能會發生二進位記錄爭用。依照您的 MySQL 版本，某些鎖定會用於保護二進位日誌的一致性和耐用性。在 RDS for MySQL 中，二進位日誌用於複寫與自動備份處理。在 Aurora MySQL 中，原生複寫或備份並不需要二進位日誌。他們依預設為停用，但可以啟用並用於外部複寫或變更資料擷取。如需詳細資訊，請參閱 MySQL 文件中的[二進位日誌](https://dev.mysql.com/doc/refman/8.0/en/binary-log.html)。

**sync/mutex/sql/MYSQL\$1BIN\$1LOG::LOCK\$1dump\$1thread\$1metrics\$1collection**  
如果開啟了二進位記錄，則在引擎將作用中傾印執行緒指標列印至引擎錯誤記錄日誌和內部作業映射時，其會取得此互斥。

**sync/mutex/sql/MYSQL\$1BIN\$1LOG::LOCK\$1inactive\$1binlogs\$1map**  
如果開啟了二進位記錄，則在引擎新增至其中、從中刪除，或搜尋最新清單後面的完整 Binlog 檔案清單時，其會取得此互斥。

**sync/mutex/sql/MYSQL\$1BIN\$1LOG::LOCK\$1io\$1cache**  
如果開啟了二進位記錄，引擎會在 Aurora Binlog IO 快取作業期間取得此互斥：配置、調整大小、釋放、寫入、讀取、清除和存取快取資訊。如果此事件經常發生，引擎會存取 Binlog 事件存放所在的快取。若要減少等待時間，請減少遞交。嘗試將多個陳述式分組成單一交易。

**synch/mutex/sql/MYSQL\$1BIN\$1LOG::LOCK\$1log**  
您已開啟二進位日誌。可能有很高的遞交輸送量、許多交易遞交，或複本讀取 Binlog。考慮使用多列陳述式或將陳述式綁定成一個交易。在 Aurora 中，使用全域資料庫而非二進位日誌複寫，或使用 `aurora_binlog_*` 參數。

**synch/mutex/sql/SERVER\$1THREAD::LOCK\$1sync**  
互斥 `SERVER_THREAD::LOCK_sync` 是在排程、處理或啟動執行緒以進行檔案寫入期間取得的。過度發生此等待事件表示資料庫中的寫入活動增加。

**synch/mutex/sql/TABLESPACES:lock**  
引擎會在下列資料表空間作業期間取得 `TABLESPACES:lock` 互斥：建立、刪除、截斷和延伸。過度發生此等待事件表示資料表空間作業頻率很高。範例是將大量資料載入至資料庫。

**synch/rwlock/innodb/dict**  
在此等候事件中，執行緒在 InnoDB 資料字典保存的 rwlock (讀取寫入鎖定) 上進行等待。

**synch/rwlock/innodb/dict\$1operation\$1lock**  
在此等候事件中，執行緒正在 InnoDB 資料字典操作上持有鎖定。

**synch/rwlock/innodb/dict sys RW lock**  
同時觸發資料定義語言程式碼 (DDL) 中的大量並行資料控制語言陳述式 (DCL)。在一般應用程式活動期間，減少應用程式對 DDL 的相依性。

**synch/rwlock/innodb/index\$1tree\$1rw\$1lock**  
大量類似的資料處理語言 (DML) 陳述式正在同時存取相同的資料庫物件。嘗試使用多列陳述式。此外，將工作負載分散到不同的資料庫物件上。例如，實作分割。

**synch/sxlock/innodb/dict\$1operation\$1lock**  
同時觸發資料定義語言程式碼 (DDL) 中的大量並行資料控制語言陳述式 (DCL)。在一般應用程式活動期間，減少應用程式對 DDL 的相依性。

**synch/sxlock/innodb/dict\$1sys\$1lock**  
同時觸發資料定義語言程式碼 (DDL) 中的大量並行資料控制語言陳述式 (DCL)。在一般應用程式活動期間，減少應用程式對 DDL 的相依性。

**synch/sxlock/innodb/hash\$1table\$1locks**  
工作階段找不到緩衝集區中的頁面。引擎需要讀取檔案或修改緩衝集區的最近最少使用 (LRU) 清單。考慮增加緩衝區快取大小，並改善相關查詢的存取路徑。

**synch/sxlock/innodb/index\$1tree\$1rw\$1lock**  
許多類似的資料處理語言 (DML) 陳述式正在同時存取相同的資料庫物件。嘗試使用多列陳述式。此外，將工作負載分散到不同的資料庫物件上。例如，實作分割。

**synch/mutex/innodb/temp\$1pool\$1manager\$1mutex**  
當工作階段正在等待取得互斥以管理工作階段暫存資料表空間集區時，會發生此等待事件。

如需同步等待事件疑難排解的詳細資訊，請參閱 [Why is my MySQL DB instance showing a high number of active sessions waiting on SYNCH wait events in Performance Insights?](https://aws.amazon.com/premiumsupport/knowledge-center/aurora-mysql-synch-wait-events/) (為什麼我的 MySQL 資料庫執行個體在績效詳情中會顯示等待 SYNCH 等待事件的大量作用中工作階段？)。