使用 CloudWatch Database Insights 分析 Amazon Aurora PostgreSQL 的鎖定樹 - Amazon CloudWatch

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

使用 CloudWatch Database Insights 分析 Amazon Aurora PostgreSQL 的鎖定樹

若要對鎖定造成的效能問題進行故障診斷,您可以使用下列方法,透過 CloudWatch Database Insights 分析 Amazon Aurora PostgreSQL 資料庫的鎖定樹狀目錄。

  • 依下拉式清單分割 – 在資料庫負載圖表中選擇封鎖物件封鎖工作階段封鎖 SQL 維度,以檢視不同的最上層封鎖程式如何隨時間對資料庫負載做出貢獻。使用資料庫負載圖表,您可以分析頂端封鎖程式是否保持不變或經常變更。然後,您可以對封鎖程式進行故障診斷。

    在依分割下拉式清單中選取封鎖工作階段的頂端 SQL 資料表
  • 鎖定分析索引標籤 – 選擇資料庫載入分析,然後選擇鎖定分析索引標籤,以檢視資料庫中鎖定爭用的相關資訊。

    資料庫載入儀表板中的鎖定樹狀目錄資料表
注意

CloudWatch Database Insights 支援所有 Aurora PostgreSQL 版本的鎖定分析。若要分析鎖定樹狀目錄,您必須啟用 Database Insights 進階模式。如需如何開啟進階模式的詳細資訊,請參閱開啟 Amazon Aurora 的資料庫洞見進階模式開啟 Amazon Relational Database Service 的資料庫洞見進階模式

鎖定分析索引標籤提供資料庫鎖定爭用的相關資訊。鎖定樹視覺化顯示不同工作階段的鎖定請求之間的關係和相依性。

Database Insights 每 15 秒擷取一次快照。快照顯示某個時間點的資料庫鎖定資料。

注意

當 CloudWatch 偵測到高鎖定時,CloudWatch 會顯示鎖定分析索引標籤的高鎖定偵測到橫幅。如果 CloudWatch 連續 15 分鐘每 15 秒拍攝鎖定快照,CloudWatch 會偵測高鎖定。

樹狀目錄中的每個節點代表特定的工作階段。父節點是封鎖其子節點的工作階段。

若要分析鎖定樹,請使用下列程序。

分析鎖定樹
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  2. 選擇 Insights

  3. 選擇 Database Insights

  4. 選擇資料庫執行個體檢視。

  5. 選擇資料庫執行個體。

  6. 選擇資料庫負載分析索引標籤。

  7. 選擇鎖定分析索引標籤。

    若要檢視資料庫執行個體的鎖定資料,請選擇 1 天或更少的期間。

  8. 選擇快照視窗。根據預設, Database Insights 會選擇具有最多封鎖工作階段的快照視窗。

    鎖定分析資料表
  9. 若要檢視快照的鎖定資料,請選擇 Database Insights 拍攝快照的時間。

  10. 若要展開鎖定樹狀目錄,請選擇工作階段 ID 旁的箭頭。

    已展開鎖定樹狀目錄

鎖定快照資料

Database Insights 為每個鎖定請求提供以下資訊。若要檢視預設未啟用的資料欄,請選擇鎖定樹狀目錄資料表的設定圖示,並啟用其他資料欄。

欄名稱 定義 預設資料欄 備註

session_id

唯一的工作階段識別符。

session_id 衍生自 HEX(pg_stat_activity.backend_start).HEX(pg_locks.pid)

pid

此後端的 PID。

pg_locks.pid

blocked_sessions_count

此鎖定封鎖的工作階段數目。

blocked_sessions_count 衍生自此鎖定封鎖IDs 數目。

last_query_executed

此工作階段執行的最後一個查詢。對於封鎖程式,它可能不是保留封鎖鎖定的查詢。

pg_stat_activity.query

wait_event

如果後端目前正在等待,則等待事件名稱,否則值為 NULL。

pg_stat_activity.wait_event

blocking_time_(In Seconds)

自此鎖定開始以來的時間 (以秒為單位)。

blocking_time_(In Seconds) 衍生自第一個等待程式等待交易 (pg_locks.waitstart) 的開始時間。

blocking_mode

封鎖工作階段所保留的鎖定模式。

pg_locks.mode

waiting_mode

等待工作階段請求的鎖定模式。

pg_locks.mode

application

連接到此後端的應用程式名稱。

pg_stat_activity.application_name

blocking_txn_start_time

封鎖交易的開始時間,如果沒有作用中的交易,則為 null。

pg_stat_activity.xact_start

waiting_start_time

等待中的使用者工作階段開始等待此鎖定的時間,如果保留鎖定則為 null。

pg_locks.waitstart

session_start_time

使用者工作階段啟動的時間。

pg_stat_activity.backend_start

state

後端的狀態。

pg_stat_activity.state

wait_event_type

此工作階段正在等待的等待事件類型。

pg_stat_activity.wait_event_type

last_query_exec_time

上次查詢開始的時間。

pg_stat_activity.query_start

user

登入此後端的使用者名稱。

pg_stat_activity.usename

host

連線用戶端的主機名稱,如反向 DNS 查詢 所回報client_addr。只有 IP 連線的此欄位才會為非空值,而且只有在啟用 log_hostname 時才會如此。

pg_stat_activity.client_hostname

port

用戶端用於與此後端通訊或使用 Unix 通訊端-1的 TCP 連接埠號碼。如果此欄位為 null,則表示這是內部伺服器程序。

pg_stat_activity.client_port

client_address

連接到此後端之用戶端的 IP 地址。如果此欄位為 null,則表示用戶端是透過伺服器機器上的 Unix 通訊端連接,或者這是自動清空等內部程序。

pg_stat_activity.client_addr

granted

如果保留鎖定,則值為 true,如果等待鎖定,則值為 false。

pg_locks.granted

waiting_tuple

頁面中鎖定的目標元數,如果目標不是元組,則為 null。

pg_locks.tuple

waiting_page

關聯中鎖定的目標頁碼,如果目標不是關聯頁或元組,則為 null。

pg_locks.page

waiting_transaction_id

鎖定的目標交易 ID,如果目標不是交易 ID,則為 null。

pg_locks.transactionid

waiting_relation

鎖定目標關係的 OID,如果目標不是關係或關係的一部分,則為 null。

pg_locks.relation

waiting_object_id

鎖定目標在其系統目錄中的 OID,如果目標不是一般資料庫物件,則為 null。

pg_locks.objid

waiting_database_id

鎖定目標所在的資料庫 OID,如果目標是共用物件則為零,如果目標是交易 ID,則為 null。

pg_locks.database

waiting_database_name

鎖定目標所在的資料庫名稱。

pg_stat_activity.datname

waiting_locktype

可鎖定物件的類型:關聯式、延伸式、凍結式、頁面、元組、交易式、Virtualxid、質譜、物件、使用者鎖定、諮詢或套用交易。

pg_locks.locktype

is_fastpath

如果使用快速路徑取得鎖定,則值為 true,如果從主鎖定資料表取得,則為 false。

pg_locks.fastpath

如需 pg_stat_activitypg_locks 檢視中值的詳細資訊,請參閱 PostgreSQL 文件中的下列主題。