View a markdown version of this page

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

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

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

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

  • 配量依據下拉式清單 – 在資料庫負載圖表中,選擇封鎖物件、封鎖工作階段或封鎖 SQL 維度,以檢視主要阻礙因子如何隨時間推移影響資料庫負載。使用資料庫負載圖表,您可以分析主要阻礙因子是恆定存在還是頻繁變動。然後,可以對阻礙因子進行疑難排解。

    在依分割下拉式清單中選取封鎖工作階段的頂端 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 會偵測到高鎖定現象。

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

若要分析鎖樹狀目錄,請依循下列程序。

分析鎖樹狀目錄
  1. 登入 AWS 管理主控台 ,並在 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 衍生自此鎖封鎖的工作階段 ID 數目。

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

透過對 client_addr 執行反向 DNS 查詢所報告的、已連線用戶端的主機名稱。此欄位僅針對 IP 連線時為非空值,且僅在 log_hostname 啟用時生效。

否

pg_stat_activity.client_hostname

port

用戶端用於與此後端通訊的 TCP 連接埠號碼;如果使用 Unix 通訊端,則為 -1。如果此欄位為 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

可鎖物件的類型:relation、extend、frozenid、page、tuple、transactionid、virtualxid、spectoken、object、userlock、advisory 或 applytransaction。

否

pg_locks.locktype

is_fastpath

若鎖是以快速路徑取得,值為 true;若鎖是從主鎖資料表取得,則值為 false。

否

pg_locks.fastpath

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