Limitless Database 等待事件 - 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 等待事件

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

Limitless Database 等待事件

下列等待事件適用於 Aurora PostgreSQL Limitless Database。您可以監控這些等待事件,以識別 Aurora PostgreSQL Limitless Database 處理的瓶頸。

主題

IO:TwophaseFilePoolWrite 等待事件

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

原因

PREPARED TRANSACTION 命令的執行程序 (包括 Limitless Database 分散式交易中的參與者),都必須保留兩階段檔案中的交易狀態。Aurora 使用檔案集區來改善此操作的效能。

動作

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

IO:TwophaseFilePoolRead 等待事件

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

原因

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

動作

這是讀取 I/O 操作。因此,此事件中的高延遲具有與 IO:DataFileRead 類似的原因,而且可以以相同的方式接受調查。如果使用 Limitless Database,您可能需要減少執行中的分散式交易數量。

AuroraLimitless:Connect 等待事件

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

原因

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

動作

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

AuroraLimitless:AsyncConnect 等待事件

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

原因

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

動作

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

AuroraLimitless:RemoteStatementSetup 等待事件

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

原因

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

動作

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

AuroraLimitless:RemoteDDLExecution 等待事件

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

原因

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

動作

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

AuroraLimitless:RemoteStatementExecution 等待事件

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

原因

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

動作

識別使用 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。請參閱 Limitless Database 中序列的相關文件。

AuroraLimitless:GlobalVacuumTimeExchange 等待事件

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

原因

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

動作

無需採取進一步動作。

AuroraLimitless:DistributedTransactionMonitorGather 等待事件

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

原因

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

動作

無需採取進一步動作。

AuroraLimitlessActivity:AdminTaskSchedulerMain 等待事件

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

AuroraLimitlessActivity:AdminTaskExecutorMain 等待事件

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

AuroraLimitlessActivity:AdminTaskMonitorMain 等待事件

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

AuroraLimitlessActivity:DatabaseCleanupMonitorMain 等待事件

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

AuroraLimitlessActivity:TopologyCleanupMonitorMain 等待事件

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

AuroraLimitlessActivity:ToplogyChangeMonitorMain 等待事件

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

AuroraLimitlessActivity:DistributedTransactionMonitorMain 等待事件

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

AuroraLimitlessActivity:GlobalVacuumMonitorMain 等待事件

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