天天看點

openGauss的可維護性:支援WDR診斷報告

作者:liwt

WDR報告提供資料庫性能診斷報告,該報告基于基線性能資料和增量資料兩個版本,從性能變化得到性能報告。

客戶價值

  • WDR報表是長期性能問題最主要的診斷手段。基于SNAPSHOT的性能基線,從多元度做性能分析,能幫助DBA掌握系統負載繁忙程度、各個元件的性能表現及性能瓶頸。
  • SNAPSHOT也是後續性能問題自診斷和自優化建議的重要資料來源。

特性描述

WDR(Workload Diagnosis Report)基于兩次不同時間點系統的性能快照資料,生成這兩個時間點之間的性能表現報表,用于診斷資料庫核心的性能故障。

使用generate_wdr_report(…) 可以生成基于兩個性能快照的性能報告。

WDR主要依賴兩個元件:

  • SNAPSHOT性能快照:性能快照可以配置成按一定時間間隔從核心采集一定量的性能資料,持久化在使用者表空間。任何一個SNAPSHOT可以作為一個性能基線,其他SNAPSHOT與之比較的結果,可以分析出與基線的性能表現。
  • WDR Reporter:報表生成工具基于兩個SNAPSHOT,分析系統總體性能表現,并能計算出更多項具體的性能名額在這兩個時間段之間的變化量,生成SUMMARY 和DETAIL兩個不同級别的性能資料。如表1、表2所示。

SUMMARY級别診斷報告:

Database Stat:

主要用于評估目前資料庫上的負載,IO狀況,負載和IO是衡量TP系統最最要的特性。

包含目前連接配接到該資料庫的session,送出、復原的事務數,讀取的磁盤塊的數量,高速緩存中已經發現的磁盤塊的次數,通過資料庫查詢傳回、抓取、插入、更新、删除的行數,沖突、死鎖發生的次數,臨時檔案的使用量,IO讀寫時間等。

Load Profile:

從時間,IO,事務,SQL幾個次元評估目前系統負載的表現。

包含作業運作elapse time、CPU time,事務日品質,邏輯和實體讀的量,讀寫IO次數、大小,登入登出次數,SQL、事務執行量,SQL P80、P95響應時間等。

Instance Efficiency Percentages:

用于評估目前系統的緩存的效率。

主要包含資料庫緩存命中率。

Events:

用于評估目前系統核心關鍵資源,關鍵事件的性能。

主要包含資料庫核心關鍵事件的發生次數,事件的等待時間。

Wait Classes:

用于評估目前系統關鍵事件類型的性能。

主要包含資料核心在主要的等待事件的種類上的釋出:STATUS、LWLOCK_EVENT、LOCK_EVENT、IO_EVENT。

CPU:

主要包含CPU在使用者态、核心态、Wait IO、空閑狀态下的時間釋出。

IO Profile:

主要包含資料庫Database IO次數、Database IO資料量、Redo IO次數、Redo IO量。

Memory Statistics:

包含最大程序記憶體、程序已經使用記憶體、最大共享記憶體、已經使用共享記憶體大小等。

DETAIL級别診斷報告

Time Model:

主要用于評估目前系統在時間次元的性能表現。

包含系統在各個階段上消耗的時間:核心時間、CPU時間、執行時間、解析時間、編譯時間、查詢重寫時間、計劃生成時間、網絡時間、IO時間。

SQL Statistics:

主要用于SQL語句性能問題的診斷。

包含歸一化的SQL的性能名額在多個次元上的排序:Elapsed Time、CPU Time、Rows Returned、Tuples Reads、Executions、Physical Reads、Logical Reads。這些名額的種類包括:執行時間,執行次數、行活動、Cache IO等。

Wait Events:

主要用于系統關鍵資源,關鍵時間的詳細性能診斷。

包含所有關鍵事件在一段時間内的表現,主要是事件發生的次數,消耗的時間。

Cache IO Stats:

用于診斷使用者表和索引的性能。

包含所有使用者表、索引上的檔案讀寫,緩存命中。

Utility status:

用于診斷背景任務性能。

包含複制等背景任務的性能。

Object stats:

用于診斷資料庫對象的性能。

包含使用者表、索引上的表、索引掃描活動,insert、update、delete活動,有效行數量,表維護操作的狀态等。

Configuration settings:

用于判斷配置是否有變更。

包含目前所有配置參數的快照。

SQL detail:

顯示unique query text資訊。

WDR 診斷報告概述

⚫ WDR(Workload Diagnosis Report)基于兩次不同時間點系統的性能快照資料,生成這 兩個時間點之間的性能表現報表,用于診斷資料庫核心的性能故障。

⚫ WDR報告是長期性能問題最主要的診斷手段。基于SNAPSHOT的性能基線,從多元度做 性能分析,能幫助DBA掌握系統負載繁忙程度、各個元件的性能表現及性能瓶頸。

⚫ SNAPSHOT也是後續性能問題自診斷和自優化建議的重要資料來源。

WDR 診斷報告

⚫ WDR主要依賴兩個元件:

 SNAPSHOT性能快照:性能快照可以配置成按一定時間間隔從核心采集一定量的性能資料,持 久化在使用者表空間。任何一個SNAPSHOT可以作為一個性能基線,其他SNAPSHOT與之比較 的結果,可以分析出與基線的性能表現。

 WDR Reporter:報告生成工具基于兩個SNAPSHOT,分析系統總體性能表現,并能計算出更 多項具體的性能名額在這兩個時間段之間的變化量,生成SUMMARY 和DETAIL兩個不同級别 的性能資料。

WDR 報告生成

⚫ 前提條件

 WDR Snasphot在啟動後(即參數enable_wdr_snapshot為on時),且快照數量大于等于2。

⚫ 操作步驟

 執行如下指令查詢已經生成的快照,以擷取快照的snapshot_id。

select * from snapshot.snapshot;

 (可選)執行如下指令手動建立快照。資料庫中隻有一個快照或者需要檢視在目前時間段資料 庫的監控資料,可以選擇手動執行快照操作,該指令需要使用者具有sysadmin權限。

select create_wdr_snapshot();

WDR 報告生成示例

⚫ 查詢已經生成的快照。

postgres=# select * from snapshot.snapshot;

snapshot_id | start_ts | end_ts

-------------+-------------------------------+-------------------------------

1 | 2020-09-07 10:20:36.763244+08 | 2020-09-07 10:20:42.166511+08

2 | 2020-09-07 10:21:13.416352+08 | 2020-09-07 10:21:19.470911+08

⚫ 執行如下指令将查詢到的資訊寫入性能報告中。

select generate_wdr_report(begin_snap_id Oid, end_snap_id Oid, varchar report_type, varchar report_scope, int node_name );

⚫ 生成格式化性能報告wdrTestNode.html。

postgres=# \a \t \o /home/om/wdrTestNode.html Output format is unaligned. Showing only tuples.

⚫ 關閉性能報告

postgres=# \o \a \t Output format is aligned. Tuples only is off.
openGauss的可維護性:支援WDR診斷報告

#opengauss

繼續閱讀