無限資料庫等待事件 - Amazon Aurora
IO:TwophaseFilePoolWrite 等待事件IO:TwophaseFilePoolRead 等待事件AuroraLimitless:Connect 等待事件AuroraLimitless:AsyncConnect 等待事件AuroraLimitless:RemoteStatementSetup 等待事件AuroraLimitless:RemoteDDLExecution 等待事件AuroraLimitless:RemoteStatementExecution 等待事件AuroraLimitless:FetchRemoteResults 等待事件AuroraLimitless:AsyncGetInitialResponse 等待事件AuroraLimitless:AsyncGetNextResponse 等待事件AuroraLimitless:AbortedCommandCleanup 等待事件AuroraLimitless:DistributedCommitPrepare 等待事件AuroraLimitless:DistributedCommit 等待事件AuroraLimitless:DistributedCommitPrepareThrottle 等待事件AuroraLimitless:PreparedTransactionResolution 等待事件AuroraLimitless:SendPreparedTransactionOutcome 等待事件AuroraLimitless:CommitClockBarrier 等待事件AuroraLimitless:SnapshotClockBarrier 等待事件AuroraLimitless:ReaderSnapshotClockBarrier 等待事件AuroraLimitless:GatherDistributedDeadlockGraph 等待事件AuroraLimitless:DistributedDeadlockDetection 等待事件AuroraLimitless:DistributedDeadlockAbort 等待事件AuroraLimitless:GatherRemoteStats 等待事件AuroraLimitless:GlobalSequenceRefresh 等待事件AuroraLimitless:GlobalVacuumTimeExchange 等待事件AuroraLimitless:DistributedTransactionMonitorGather 等待事件AuroraLimitlessActivity:AdminTaskSchedulerMain 等待事件AuroraLimitlessActivity:AdminTaskExecutorMain 等待事件AuroraLimitlessActivity:AdminTaskMonitorMain 等待事件AuroraLimitlessActivity:DatabaseCleanupMonitorMain 等待事件AuroraLimitlessActivity:TopologyCleanupMonitorMain 等待事件AuroraLimitlessActivity:ToplogyChangeMonitorMain 等待事件AuroraLimitlessActivity:DistributedTransactionMonitorMain 等待事件AuroraLimitlessActivity:GlobalVacuumMonitorMain 等待事件

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

無限資料庫等待事件

下列等待事件適用於 Aurora PostgreSQL 無限制資料庫。您可以監控這些等待事件,以識別 Aurora PostgreSQL 無限制資料庫處理中的瓶頸。

主題

IO:TwophaseFilePoolWrite 等待事件

等待在兩階段狀態檔案集區中寫入兩階段狀態檔案。這是 Aurora 特定事件。

原因

執行PREPARED TRANSACTION命令的程序,包括無限資料庫分散式交易中的參與者,必須將交易狀態保留在兩階段檔案中。Aurora 使用檔案集區來改善此操作的效能。

動作

這是同步寫入 I/O 操作,因此在此事件中的高延遲具有與 相似的原因IO:XactSync,並且可以以相同的方式進行調查。如果使用無限資料庫,您可能需要減少正在執行的分散式交易數量。

IO:TwophaseFilePoolRead 等待事件

等待讀取兩階段狀態檔案集區中的兩階段狀態檔案。

原因

針對先前預備的交易執行COMMIT PREPARED命令的程序,包括無限資料庫分散式交易的參與者,可能需要從兩階段檔案讀取先前持續的交易狀態。Aurora 使用檔案集區來改善此操作的效能。

動作

這是讀取 I/O 操作。因此,此事件中的高延遲與 具有相似的原因IO:DataFileRead,並且可以進行相同的調查。如果使用無限資料庫,您可能需要減少正在執行的分散式交易數量。

AuroraLimitless:Connect 等待事件

程序正在等待建立與叢集中另一個節點的連線。

原因

在程序與遠端節點之間建立連線,以執行查詢、分散式交易和執行 DDLs。

動作

減少叢集的同時連線數,或調整跨碎片查詢的使用。

AuroraLimitless:AsyncConnect 等待事件

此事件類似於 Connect,但代表等待與一組節點建立平行連線的程序。

原因

平行連線建立最常在執行 DDL 陳述式時完成。

動作

減少 DDL 陳述式的數量,或在同一工作階段中合併多個 DDLs,以改善連線重複使用。

AuroraLimitless:RemoteStatementSetup 等待事件

程序正在等待遠端查詢執行設定,例如游標開啟、關閉或準備陳述式建立。

原因

此等待事件會隨著碎片資料表上的掃描次數增加,其中陳述式無法進行單一碎片最佳化。

動作

最佳化查詢,以減少掃描操作的數量或提高單一碎片最佳化的資格。

AuroraLimitless:RemoteDDLExecution 等待事件

程序正在等待遠端 DDL 命令完成。

原因

當您在資料庫碎片群組上發出 DDL 命令時,必須先將其分發至其他路由器和碎片節點,才能確認操作。某些 DDL 操作可能會長時間執行,因為資料必須適應結構描述變更。

動作

識別長時間執行的 DDL 命令,以便您可以將它們最佳化。

AuroraLimitless:RemoteStatementExecution 等待事件

程序正在等待遠端命令完成。

原因

SQL 命令正在遠端節點上執行。此事件會經常出現在內部通訊中,例如 auto_analyze和 活動訊號檢查。

動作

Idenfify 使用 limitless_stat_statements 檢視的長期執行命令。在許多情況下,這是預期事件,特別是對於背景工作者或內部程序,不需要採取任何動作。

AuroraLimitless:FetchRemoteResults 等待事件

程序正在等待從遠端節點擷取資料列。

原因

從遠端資料表擷取大量資料列時,此等待事件可能會增加,例如碎片或參考資料表。

動作

使用 limitless_stat_statements 檢視識別未最佳化的SELECT查詢。最佳化查詢以僅擷取必要的資料。您也可以調校 rds_aurora.limitless_maximum_adaptive_fetch_size 參數。

AuroraLimitless:AsyncGetInitialResponse 等待事件

在查詢執行中使用管道模式時,程序正在等待初始回應。

原因

對於具有單一碎片資料放置的查詢,這通常會在路由器進行碎片執行期間出現,並且是正常執行的預期部分。

動作

無需採取進一步動作。

AuroraLimitless:AsyncGetNextResponse 等待事件

在查詢執行中使用管道模式時,程序正在等待額外的回應。

原因

對於具有單一碎片資料放置的查詢,這通常會在路由器進行碎片執行期間出現,並且是正常執行的預期部分。

動作

無需採取進一步動作。

AuroraLimitless:AbortedCommandCleanup 等待事件

程序正在等待遠端清除查詢的結果。清除查詢會發給碎片節點,以在分散式交易結束時將其傳回適當的狀態。

原因

交易因為發現錯誤或使用者發出明確的 ABORT 命令或取消執行中的查詢而中止時,就會完成交易清除。

動作

調查取消交易的原因。

AuroraLimitless:DistributedCommitPrepare 等待事件

程序正在遞交分散式交易,並等待所有參與者確認準備命令。

原因

修改多個節點的交易必須執行分散式遞交。在 中等待很長的原因DistributedCommitPrepare可能是在參與節點上的IO:TwophaseFilePoolWrite事件中等待很長。

動作

減少修改多個節點上資料的交易數量。調查叢集其他節點中的IO:TwophaseFilePoolWrite事件。

AuroraLimitless:DistributedCommit 等待事件

程序正在遞交分散式交易,並等待領導參與者確認遞交命令。

原因

修改多個節點的交易必須執行分散式遞交。長時間等待DistributedCommit可能是由於潛在客戶參與者IO:XactSync事件的長時間等待所造成。

動作

減少修改多個節點上資料的交易數量。調查叢集其他節點中的IO:XactSync事件。

AuroraLimitless:DistributedCommitPrepareThrottle 等待事件

程序正在嘗試準備分散式交易,並且由於現有的預備交易而受到調節。

原因

修改多個節點的交易必須執行分散式遞交。這些交易的參與者必須執行準備操作,做為遞交通訊協定的一部分。Aurora 會限制並行準備的數量,如果超過此限制,程序將在DistributedCommitPrepareThrottle事件中等待。

動作

減少修改多個節點上資料的交易數量。在這些IO:TwophaseFilePoolWrite事件中因為時間增加而調查事件可能會導致現有的準備交易累積,進而導致新的準備嘗試進行限流。

AuroraLimitless:PreparedTransactionResolution 等待事件

程序遇到由處於預備狀態的分散式交易所修改的元組。程序必須判斷分散式交易是否會出現在其快照中。

原因

修改多個節點的交易必須執行包含準備階段的分散式遞交。大量分散式交易或增加分散式遞交的延遲可能會導致其他程序遇到PreparedTransactionResolution等待事件。

動作

減少修改多個節點上資料的交易數量。調查分散式遞交相關事件,因為在這些事件中的時間增加,可能會增加分散式交易遞交路徑的延遲。您也可以調查網路和 CPU 負載。

AuroraLimitless:SendPreparedTransactionOutcome 等待事件

程序正在協調分散式交易的節點上執行,而另一個程序已查詢該交易的狀態,或該程序已遞交分散式交易並將結果傳送給參與者。

原因

遇到PreparedTransactionResolution等待事件的程序將查詢交易協調器。交易協調器上的回應會遇到 SendPreparedTransactionOutcome。

動作

減少修改多個節點上資料的交易數量。調查分散式遞交相關事件IO:TwophaseFilePoolWriteIO:TwophaseFilePoolRead 事件,因為這些事件可能會增加分散式交易遞交路徑的延遲。您也可以調查網路和 CPU 負載。

AuroraLimitless:CommitClockBarrier 等待事件

程序正在遞交交易,必須等待,以確保叢集中所有節點的指派遞交時間都保證為過去。

原因

CPU 或網路統計可能會導致時鐘偏離增加,導致在此等待事件中花費的時間。

動作

調查叢集中的 CPU 或網路飽和度。

AuroraLimitless:SnapshotClockBarrier 等待事件

程序已經收到來自另一個節點的快照時間,該節點未來有時鐘,並正在等待自己的時鐘到達該時間。

原因

這通常發生在程序從下推到碎片的函數收到結果,且節點之間存在時鐘偏離之後。CPU 或網路統計可能會導致時鐘偏離增加,導致在此等待事件中花費的時間。

動作

調查叢集中的 CPU 或網路統計資料。

AuroraLimitless:ReaderSnapshotClockBarrier 等待事件

此事件發生在讀取節點上。程序正在等待讀取節點重播寫入串流,以便套用程序快照時間之前發生的所有寫入。

原因

增加 Aurora 複本延遲可能會導致此事件的等待時間增加。

動作

調查 Aurora 複本延遲。

AuroraLimitless:GatherDistributedDeadlockGraph 等待事件

程序正在與其他節點通訊,以收集鎖定圖形作為分散式死鎖偵測的一部分。

原因

當程序等待鎖定時,會在等待超過 之後執行分散式死鎖檢查rds_aurora.limitless_distributed_deadlock_timeout

動作

調查應用程式中鎖定爭用的原因,並考慮調校 rds_aurora.limitless_distributed_deadlock_timeout

AuroraLimitless:DistributedDeadlockDetection 等待事件

程序正在與其他節點通訊,以偵測分散式死結。

原因

當程序等待鎖定時,會在等待超過 之後執行分散式死鎖檢查rds_aurora.limitless_distributed_deadlock_timeout

動作

調查應用程式中鎖定爭用的原因,並考慮調校 rds_aurora.limitless_distributed_deadlock_timeout

AuroraLimitless:DistributedDeadlockAbort 等待事件

程序正在與其他節點通訊,以中止選擇為分散式死結中受害者的工作階段。

原因

應用程式模式會產生分散式死結。

動作

調查導致分散式死結的應用程式模式。

AuroraLimitless:GatherRemoteStats 等待事件

程序正在從叢集中的其他節點收集統計資料。

原因

監控或活動查詢和檢視,例如 limitless_stat_activity,將從其他節點擷取統計資料。

動作

無需採取進一步動作。

AuroraLimitless:GlobalSequenceRefresh 等待事件

程序正在產生新的序列值,必須向全域序列請求新的區塊。

原因

如果 rds_aurora.limitless_sequence_chunk_size不足,產生高速率的序列值可能會導致在此事件中停滯。

動作

這是正常的發生。如果您在此事件中看到時間過長,請考慮調校 rds_aurora.limitless_sequence_chunk_size。請參閱無限資料庫中序列的文件。

AuroraLimitless:GlobalVacuumTimeExchange 等待事件

程序正在交換快照資料以支援清空。

原因

無限資料庫中的節點與其他節點交換最舊的作用中快照時間資料,以計算清空執行的正確截止時間。

動作

無需採取進一步動作。

AuroraLimitless:DistributedTransactionMonitorGather 等待事件

程序是從其他節點收集交易中繼資料,以支援分散式交易清除。

原因

無限資料庫中的節點與其他節點交換交易中繼資料,以判斷何時可以清除分散式交易狀態。

動作

無需採取進一步動作。

AuroraLimitlessActivity:AdminTaskSchedulerMain 等待事件

在任務排程器程序的主迴圈中等待。

AuroraLimitlessActivity:AdminTaskExecutorMain 等待事件

在任務執行器程序的主迴圈中等待。

AuroraLimitlessActivity:AdminTaskMonitorMain 等待事件

在任務監控程序的主迴圈中等待。

AuroraLimitlessActivity:DatabaseCleanupMonitorMain 等待事件

在資料庫清除監控程序的主迴圈中等待。

AuroraLimitlessActivity:TopologyCleanupMonitorMain 等待事件

在拓撲清理監控程序的主迴圈中等待。

AuroraLimitlessActivity:ToplogyChangeMonitorMain 等待事件

在拓撲變更監控程序的主迴圈中等待。

AuroraLimitlessActivity:DistributedTransactionMonitorMain 等待事件

在分散式交易監控程序的主迴圈中等待。

AuroraLimitlessActivity:GlobalVacuumMonitorMain 等待事件

等待全域清空監控程序的主迴圈。