使用 CloudWatch Database Insights 分析 Amazon Aurora PostgreSQL 的鎖樹狀目錄
若要對鎖造成的效能問題進行疑難排解,可以透過下列方式,使用 CloudWatch Database Insights 分析 Amazon Aurora PostgreSQL 資料庫的鎖樹狀目錄。
配量依據下拉式清單 – 在資料庫負載圖表中,選擇封鎖物件、封鎖工作階段或封鎖 SQL 維度,以檢視主要阻礙因子如何隨時間推移影響資料庫負載。使用資料庫負載圖表,您可以分析主要阻礙因子是恆定存在還是頻繁變動。然後,可以對阻礙因子進行疑難排解。
鎖分析索引標籤 – 選擇資料庫負載分析,然後選擇鎖分析索引標籤,以檢視資料庫中的鎖爭用資訊。
注意
CloudWatch Database Insights 支援所有 Aurora PostgreSQL 版本的鎖分析。若要分析鎖樹狀目錄,必須啟用 Database Insights 進階模式。如需如何開啟進階模式的資訊,請參閱 Turning on the Advanced mode of Database Insights for Amazon Aurora 和 Turning on the Advanced mode of Database Insights for Amazon Relational Database Service
鎖分析索引標籤提供有關資料庫鎖爭用情況的資訊。鎖樹狀目錄視覺化圖形顯示來自不同工作階段的鎖請求之間的關係與相依項。
Database Insights 每 15 秒擷取一次快照。快照顯示某個時間點的資料庫鎖資料。
注意
當 CloudWatch 偵測到高鎖定時,CloudWatch 會在鎖分析索引標籤上顯示偵測到的高鎖定橫幅。如果 CloudWatch 連續 15 分鐘每 15 秒拍攝鎖快照,CloudWatch 會偵測到高鎖定現象。
樹狀目錄中的每個節點代表特定工作階段。父節點是封鎖其子節點的工作階段。
若要分析鎖樹狀目錄,請依循下列程序。
分析鎖樹狀目錄
簽署 AWS 管理主控台 並開啟位於 https://console.aws.amazon.com/cloudwatch/
的 CloudWatch 主控台。 選擇 Insights。
選擇 Database Insights。
選擇資料庫執行個體檢視。
選擇資料庫執行個體。
選擇資料庫負載分析索引標籤。
選擇鎖分析索引標籤。
若要檢視資料庫執行個體的鎖資料,請將期間設定為 1 天或更短時間。
選擇快照視窗。依預設, Database Insights 會選擇具有最多封鎖工作階段的快照視窗。
若要檢視快照的鎖資料,請選擇 Database Insights 拍攝快照的時間。
若要展開鎖樹狀目錄,請選擇工作階段 ID 旁的箭頭。
鎖快照資料
Database Insights 為每個鎖請求提供以下資訊。若要檢視預設未啟用的欄位,請選擇鎖樹狀目錄資料表的設定圖示,並啟用其他欄位。
| 欄名稱 | 定義 | 預設欄位 | 備註 |
|---|---|---|---|
|
|
唯一的工作階段識別符。 |
是 |
|
|
|
此後端的 PID。 |
是 |
|
|
|
此鎖封鎖的工作階段數目。 |
是 |
|
|
|
此工作階段執行的最後一個查詢。對於封鎖程式來說,可能不是將鎖封鎖的查詢。 |
是 |
|
|
|
如果後端目前正在等待,則為等待事件名稱,否則值為 NULL。 |
是 |
|
|
|
此鎖定啟動以來經過的時間 (以秒為單位)。 |
是 |
|
|
|
封鎖工作階段保留的鎖模式。 |
否 |
|
|
|
等待工作階段請求的鎖模式。 |
否 |
|
|
|
連線至後端的應用程式名稱。 |
否 |
|
|
|
封鎖交易的開始時間,如果沒有作用中的交易,則為 null。 |
否 |
|
|
|
等待中的使用者工作階段開始等待此鎖的時間,如果保留鎖,則為 null。 |
否 |
|
|
|
使用者工作階段開始的時間。 |
否 |
|
|
|
後端的狀態。 |
否 |
|
|
|
此工作階段正在等待的等待事件類型。 |
否 |
|
|
|
上次查詢開始的時間。 |
否 |
|
|
|
登入此後端之使用者的名稱。 |
否 |
|
|
|
透過對 |
否 |
|
|
|
用戶端用於與此後端通訊的 TCP 連接埠號碼;如果使用 Unix 通訊端,則為 |
否 |
|
|
|
連線到此後端之用戶端的 IP 位址。如果此欄位為 null,表示用戶端是透過伺服器機器上的 Unix 通訊端連線,或者這是自動清空等內部程序。 |
否 |
|
|
|
如果保留鎖,值為 true;如果等待鎖,則值為 false。 |
否 |
|
|
|
頁面內鎖針對的元組編號,若目標不是元組,則為 null。 |
否 |
|
|
|
關係中鎖針對的頁碼,如果目標不是關係頁面或元組,則為 null。 |
否 |
|
|
|
鎖針對的交易的 ID,如果目標不是交易 ID,則為 null。 |
否 |
|
|
|
鎖針對的關係的 OID,如果目標不是關係或關係的一部分,則為 null。 |
否 |
|
|
|
鎖目標在其系統目錄內的 OID,如果目標不是一般資料庫物件,則為 null。 |
否 |
|
|
|
鎖目標所在之資料庫的 OID;如果目標是共用物件,值為零;如果目標是交易 ID,則為 null。 |
否 |
|
|
|
鎖目標所在之資料庫的名稱。 |
否 |
|
|
|
可鎖物件的類型:relation、extend、frozenid、page、tuple、transactionid、virtualxid、spectoken、object、userlock、advisory 或 applytransaction。 |
否 |
|
|
|
若鎖是以快速路徑取得,值為 true;若鎖是從主鎖資料表取得,則值為 false。 |
否 |
|
如需 pg_stat_activity 和 pg_locks 檢視中值的詳細資訊,請參閱 PostgreSQL 文件中的下列主題。