本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
RDS 適用於 PostgreSQL 等待事件
等待事件表示工作階段正在等待資源。例如,當 RDS PostgreSQL 正在等待從用戶端接收資料時,Client:ClientRead
會發生等待事件。工作階段通常會等待如下資源。
-
透過單一執行緒存取緩衝區,例如,當工作階段嘗試修改緩衝區時
-
另一個工作階段目前鎖定的資料列
-
資料檔讀取
-
日誌檔寫入
例如,為了滿足查詢,工作階段可能執行完整的資料表掃描。如果資料不在記憶體中,工作階段會等待磁碟輸入/輸出完成。將緩衝區讀入記憶體後,工作階段可能需要等待,因為其他工作階段正在存取這些緩衝區。資料庫使用預先定義的等待事件來記錄等待。這些事件分組為多個類別。
單一等待事件本身不表示效能問題。例如,如果請求的資料不在記憶體中,則需要從磁碟讀取資料。如果一個工作階段鎖定資料列來更新,則另一個工作階段要等待此資料列解除鎖定才能更新。遞交需要等待寫入日誌檔完成。等待是資料庫正常運作所不可或缺。
另一方面,大量等待事件通常顯示效能問題。在這種情況下,您可以使用等待事件資料來判斷工作階段將時間花在何處。例如,如果報告通常執行幾分鐘,但現在執行數小時,您可以識別佔總等待時間最多的等待事件。如果您可以查出最常等待事件的原因,通常就能做些改變來改善效能。例如,如果工作階段等待的資料列被另一個工作階段鎖定,您可以結束該鎖定工作階段。