WDR-GaussDB(DWS) 的性能監(jiān)測報告

      網(wǎng)友投稿 683 2025-03-31

      GaussDB(DWS) 8.1.1版本引入了負荷診斷報告(Workload Diagnosis Report,以下簡稱WDR)功能,可以提供指定時間段內(nèi)的性能數(shù)據(jù),以html網(wǎng)頁報告的形式呈現(xiàn)給用戶。通過分析該報告,能夠幫助用戶發(fā)現(xiàn)異常、診斷問題、優(yōu)化性能等,其內(nèi)容豐富直觀,是數(shù)據(jù)庫調(diào)優(yōu)的利器。


      本文對WDR的原理和使用方法進行簡要介紹。通過本文,讀者可知曉什么是WDR,如何創(chuàng)建性能數(shù)據(jù)快照以及生成WDR報告。解讀WDR報告,以及運用報告發(fā)現(xiàn)和定位問題等將在后續(xù)的文章中展開討論。

      1.?? WDR簡介

      WDR是GaussDB(DWS)數(shù)據(jù)庫監(jiān)控特性的衍生品。數(shù)據(jù)庫內(nèi)核在運行過程中積累了大量的一手數(shù)據(jù),像執(zhí)行各類SQL的數(shù)量,表和索引的訪問次數(shù)和時間,CPU、內(nèi)存等底層軟硬件的運行情況等。用戶可以通過數(shù)據(jù)庫提供的系統(tǒng)視圖實時查詢這些數(shù)據(jù)。例如,查詢PGXC_WORKLOAD_SQL_COUNT視圖可以獲得自數(shù)據(jù)庫啟動以來各類SQL的執(zhí)行次數(shù):

      postgres=# select * from PGXC_WORKLOAD_SQL_COUNT;

      node_name |?? workload?? | select_count | update_count | insert_count | delete_count | ddl_count | dml_count | dcl_count

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

      cn_5001?? | default_pool |????? 1125616 |???????? 1236 |????? 322303 |??????????? 0 |??????? 13 |?? 1573048 |?????? 102

      cn_5002?? | default_pool |????? 1128231 |???????? 1322 |?????? 321048 |??????????? 0 |??????? ?2 |?? 1575517 |??? 173973

      cn_5003?? | default_pool |????? 1128191 |???????? 1130 |?????? 309138 |??????????? 0 |???????? 0 |?? 1575430 |??? 173980

      (3 rows)

      將這些一手的性能監(jiān)測數(shù)據(jù)保存下來,并進行自動化的統(tǒng)計分析,就得獲知某段時間內(nèi)數(shù)據(jù)庫的運行情況,例如是否繁忙,是否有不合理的SQL,有哪些異常事件等,從而為診斷問題,性能調(diào)優(yōu)提供參考依據(jù)。這便是WDR的由來。

      圖1 WDR原理

      2.?? 創(chuàng)建性能快照

      如上一章所述,對監(jiān)測數(shù)據(jù)進行分析之前先要保存下來。出于性能考慮,數(shù)據(jù)庫內(nèi)核將各種監(jiān)測數(shù)據(jù)都放在了內(nèi)存里,以便快速更新和讀取。一旦進程重啟,這些數(shù)據(jù)將會丟失。因此,WDR做的第一件事就是將內(nèi)存里的檢測數(shù)據(jù)保存到外設(shè)上。這些被保存的性能監(jiān)測數(shù)據(jù)被稱為“快照”,而保存的過程稱為“創(chuàng)建快照”。

      注意不要將這里的“快照”與數(shù)據(jù)庫的Snapshot混淆。后者指的是Database中的數(shù)據(jù)在某一時刻的狀態(tài),而WDR創(chuàng)建的“快照”是指將某一時刻查詢到的系統(tǒng)視圖的內(nèi)容保存在專門的表格中。

      WDR創(chuàng)建的快照保存在dbms_om schema下的表格中。每個系統(tǒng)視圖對應(yīng)一個表格,表格的名字=“dbms_om.snap_”+視圖名稱。例如PGXC_WORKLOAD_SQL_COUNT視圖的快照保存在dbms_om.snap_pgxc_workload_sql_count表格中。

      WDR支持以兩種方式創(chuàng)建快照。一種是由后臺線程定期創(chuàng)建,時間間隔由wdr_snapshot_interval參數(shù)指定,默認為1小時創(chuàng)建一次。另一種是執(zhí)行create_wdr_snapshot系統(tǒng)函數(shù)實時創(chuàng)建,注意該函數(shù)需要管理員權(quán)限。

      postgres=# select create_wdr_snapshot();

      create_wdr_snapshot

      ------------------------------------------

      WDR snapshot request has been submitted.

      (1 row)

      無論以何種方式創(chuàng)建,都需要將enable_wdr_snapshot參數(shù)設(shè)為on。

      每次打完快照,dbms_om下snapshot相關(guān)的表格中都會增加若干行。可以通過表格dbms_om.snapshot查看目前已有快照的ID和創(chuàng)建起止時間。例如:

      postgres=# select * from dbms_om.snapshot order by snapshot_id desc limit 5;

      snapshot_id |?????????? start_ts??????????? |??????????? end_ts

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

      312 | 2021-05-29 12:36:32.509763+08 | 2021-05-29 12:36:39.938167+08

      311 | 2021-05-29 11:36:32.489812+08 | 2021-05-29 11:36:40.23865+08

      310 | 2021-05-29 10:36:32.214843+08 | 2021-05-29 10:36:37.436173+08

      309 | 2021-05-29 09:48:11.587959+08 | 2021-05-29 09:48:18.247602+08

      308 | 2021-05-29 09:36:31.687527+08 | 2021-05-29 09:36:36.897983+08

      (5 rows)

      以第一行為例,可知ID=312的快照從2021-05-29 12:36:32開始創(chuàng)建,到2021-05-29 12:36:39創(chuàng)建完成。snapshot_id是每次快照的唯一標識。

      WDR每次會對多個系統(tǒng)視圖打快照,單個視圖快照的起止時間可以通過dbms_om.tables_snap_timestamp表格查詢。以ID=312的快照為例:

      postgres=# select * from dbms_om.tables_snap_timestamp where snapshot_id=312;

      snapshot_id | db_name? |??????????? tablename???????????? |?????????? start_ts??????????? |??????????? end_ts

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

      312 | postgres | snap_pgxc_os_run_info??????????? | 2021-05-29 12:36:32.511503+08 | 2021-05-29 12:36:32.691519+08

      312 | postgres | snap_pgxc_wait_events??????????? | 2021-05-29 12:36:32.692543+08 | 2021-05-29 12:36:33.982895+08

      312 | postgres | snap_pgxc_instr_unique_sql?????? | 2021-05-29 12:36:33.983801+08 | 2021-05-29 12:36:34.131792+08

      .......

      (19 rows)

      相比dbms_om.snapshot,dbms_om.tables_snap_timestamp表格記錄了更精確的快照時間。

      為了避免占用太多空間,太舊的快照會被定期清除,清除時間通過wdr_snapshot_retention_days設(shè)置,范圍1~15天,默認是8天,也就是說默認8天前創(chuàng)建的快照會被刪除。如果想保留更久的快照數(shù)據(jù),需要用戶自己做轉(zhuǎn)儲。

      3.?? 生成WDR報告

      有了快照后便可以對性能監(jiān)測數(shù)據(jù)進行計算分析,生成報告供用戶查看。不同的分析角度和分析方式可以得到不同的報告。目前WDR支持對比前后兩次快照數(shù)據(jù),生成該時間段的性能監(jiān)測報告,簡稱“WDR報告”。

      由于GaussDB(DWS)是分布式數(shù)據(jù)庫,由多個節(jié)點組成,節(jié)點又分為CN(Coordinator)和DN(Datanode),相應(yīng)地WDR報告也分為集群(cluster)和單節(jié)點(node)兩種范圍(scope)。兩種scope的報告內(nèi)容有所不同,前者由集群總體的性能數(shù)據(jù)組成,后者針對單個節(jié)點的性能表現(xiàn)進行分析計算。對于單節(jié)點scope的報告,CN和DN上的報告內(nèi)容也有所不同。報告scope在生成報告時由用戶指定。

      GaussDB(DWS)提供了系統(tǒng)函數(shù)generate_wdr_report()用于創(chuàng)建WDR報告。生成報告前,首先需確定起止snapshot_id。通過查詢dbms_om.snapshot表格,針對感興趣的時間段,取得兩個時間點對應(yīng)的snapshot_id。例如,想查看2021-02-21 03:00:00和2021-02-21 04:00:00之間的性能狀況:

      postgres=# select * from dbms_om.snapshot where start_ts > '2021-02-21 03:00:00'::timestamptz and start_ts < '2021-02-21 04:00:00'::timestamptz order by snapshot_id;

      snapshot_id |?????????? start_ts??????????? |??????????? end_ts

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

      2147 | 2021-02-21 03:02:40.000716+08 | 2021-02-21 03:03:17.840595+08

      2148 | 2021-02-21 03:12:39.873876+08 | 2021-02-21 03:13:15.963517+08

      2149 | 2021-02-21 03:22:39.875301+08 | 2021-02-21 03:23:16.659778+08

      2150 | 2021-02-21 03:32:40.857761+08 | 2021-02-21 03:33:18.477795+08

      2151 | 2021-02-21 03:42:41.454982+08 | 2021-02-21 03:43:17.977323+08

      2152 | 2021-02-21 03:52:41.794683+08 | 2021-02-21 03:53:18.676577+08

      (6 rows)

      通過以上查詢得到該時間段對應(yīng)的起止snapshot_id分別是2147和2152。

      下一步,確定生成報告的類型。當前版本支持生成3種類型的WDR:摘要型(summary),詳細型(detail)和全部型(all)。摘要型只包括簡要分析計算結(jié)果,詳細型只包含詳細的指標數(shù)據(jù),全部型包括摘要型和詳細型的全部內(nèi)容。

      最后,執(zhí)行g(shù)enerate_wdr_report()函數(shù)生成WDR報告。例如生成2021-02-21 03:00:00和2021-02-21 04:00:00之間的摘要型集群范圍WDR報告,可執(zhí)行:

      postgres=# select generate_wdr_report(2147, 2152, 'summary', 'cluster', '');

      generate_wdr_report

      --------------------------------------------------------------------------

      Report summary-cluster-2147-2152-20210301125740.html has been generated.

      (1 row)

      要生成節(jié)點cn_5001在2021-02-21 03:00:00和2021-02-21 04:00:00之間的全部型WDR報告,可執(zhí)行:

      postgres=# select generate_wdr_report(2147, 2152, 'all', 'node', 'cn_5001');

      generate_wdr_report

      ----------------------------------------------------------------------

      Report all-cn_5001-2147-2152-20210301125906.html has been generated.

      (1 row)

      成功后,會提示“$報告文件名 has been generated”。報告文件默認位放在當前CN節(jié)點的pg_log目錄下,可以用web瀏覽器打開:

      圖 2 WDR報告

      報告中的各部分默認為展開狀態(tài),如果雙擊標題,相關(guān)部分內(nèi)容會收起,標題前“-”變?yōu)椤?”,如圖3所示:

      圖3收起后的WDR報告樣式

      報告中各指標的含義可參考產(chǎn)品文檔。如何運用WDR報告分析和定位問題將在后續(xù)的文章中討論。

      4.?? 注意事項

      如前文所述,WDR特性依賴于各種數(shù)據(jù)庫內(nèi)核監(jiān)測功能提供數(shù)據(jù)。出于性能考慮,有些內(nèi)核監(jiān)測功能默認處于關(guān)閉狀態(tài),需要通過GUC參數(shù)開啟。如果不開啟,相應(yīng)性能視圖查詢的結(jié)果是空的,也無法生成正確的快照和WDR報告。如果要得到完整的WDR報告,需要將下表中的GUC參數(shù)設(shè)為最后一列中的值:

      參數(shù)

      監(jiān)測對象

      默認值

      應(yīng)取值

      enable_resource_track

      監(jiān)控特性總開關(guān),只有在該參數(shù)打開的情況下下面的參數(shù)才起作用。

      on

      on

      enable_track_wait_event

      等待事件時間統(tǒng)計

      off

      on

      track_sql_count

      SQL數(shù)量統(tǒng)計

      off

      on

      instr_unique_sql_count

      Unique SQL性能統(tǒng)計。參見https://bbs.huaweicloud.com/blogs/197299

      0

      >0,例如10000

      track_io_timing

      WDR-GaussDB(DWS) 的性能監(jiān)測報告

      讀寫內(nèi)存緩沖區(qū)時間統(tǒng)計

      off

      on

      enable_wdr_snapshot

      WDR特性

      off

      on

      想了解GuassDB(DWS)更多信息,歡迎微信搜索“GaussDB DWS”關(guān)注微信公眾號,和您分享最新最全的PB級數(shù)倉黑科技,后臺還可獲取眾多學習資料哦~

      EI企業(yè)智能 Gauss AP 應(yīng)用性能調(diào)優(yōu) 數(shù)據(jù)倉庫服務(wù) GaussDB(DWS)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:如何在Excel中展開或關(guān)閉所有組行和列?
      下一篇:wps里的ppt怎么統(tǒng)計字數(shù)(wps中的ppt怎么統(tǒng)計字數(shù))
      相關(guān)文章
      久久精品国产69国产精品亚洲| 亚洲一区视频在线播放| 亚洲中文字幕无码爆乳av中文| 亚洲免费综合色在线视频| 亚洲国产成人精品激情| 亚洲的天堂av无码| 亚洲毛片免费视频| 亚洲精品中文字幕无乱码| 91亚洲精品视频| 亚洲欧洲日韩在线电影| 亚洲熟妇av一区二区三区下载| 亚洲女人18毛片水真多| 亚洲乱码无限2021芒果| 国产精品亚洲精品观看不卡| 97久久国产亚洲精品超碰热| 亚洲一区二区三区写真| 亚洲高清国产拍精品熟女| 亚洲AV无码AV男人的天堂不卡| 色综合久久精品亚洲国产| 在线91精品亚洲网站精品成人| 亚洲福利在线播放| 国产a v无码专区亚洲av| 国产亚洲欧洲Aⅴ综合一区| 国产亚洲婷婷香蕉久久精品 | 国产亚洲婷婷香蕉久久精品| 精品久久香蕉国产线看观看亚洲| 亚洲av无码潮喷在线观看| 久久亚洲美女精品国产精品| 亚洲剧场午夜在线观看| 亚洲中文无码永久免| 在线亚洲v日韩v| 亚洲永久精品ww47| 久久精品国产亚洲| 亚洲精品韩国美女在线| 亚洲视频无码高清在线| 爱爱帝国亚洲一区二区三区| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久精品国产亚洲沈樵| 亚洲自偷自拍另类图片二区| 国产成人精品日本亚洲18图| 国产精品亚洲专区无码WEB|