本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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:TwophaseFilePoolWrite 和 IO: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 等待事件
等待全域清空監控程序的主迴圈。