关于gaussdb:带你了解WDRGaussDBDWS-的性能监测报告

7次阅读

共计 5495 个字符,预计需要花费 14 分钟才能阅读完成。

摘要:通过本文,读者可通晓什么是 WDR,如何创立性能数据快照以及生成 WDR 报告。

本文分享自华为云社区《WDR-GaussDB(DWS) 的性能监测报告》,作者:Zhang Jingyao。

GaussDB(DWS) 8.1.1 版本引入了 负荷诊断报告(Workload Diagnosis Report,以下简称 WDR)性能,能够提供指定时间段内的性能数据,以 html 网页报告的模式出现给用户。通过剖析该报告,可能帮忙用户发现异常、诊断问题、优化性能等,其内容丰盛直观,是数据库调优的利器。

本文对 WDR 的原理和应用办法进行简要介绍。通过本文,读者可通晓什么是 WDR,如何创立性能数据快照以及生成 WDR 报告。

1. WDR 简介

WDR 是 GaussDB(DWS)数据库监控个性的衍生品。数据库内核在运行过程中积攒了大量的一手数据,像执行各类 SQL 的数量,表和索引的拜访次数和工夫,CPU、内存等底层软硬件的运行状况等。用户能够通过数据库提供的零碎视图实时查问这些数据。例如,查问 PGXC_WORKLOAD_SQL_COUNT 视图能够取得自数据库启动以来各类 SQL 的执行次数:

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)

将这些一手的性能监测数据保留下来,并进行自动化的统计分析,就得获知某段时间内数据库的运行状况,例如是否忙碌,是否有不合理的 SQL,有哪些异样事件等,从而为诊断问题,性能调优提供参考根据。这便是 WDR 的由来。

图 1 WDR 原理

2. 创立性能快照

如上一章所述,对监测数据进行剖析之前先要保留下来。出于性能思考,数据库内核将各种监测数据都放在了内存里,以便疾速更新和读取。一旦过程重启,这些数据将会失落。因而,WDR 做的第一件事就是将内存里的检测数据保留到外设上。这些被保留的性能监测数据被称为“快照”,而保留的过程称为“创立快照”。

留神不要将这里的“快照”与数据库的 Snapshot 混同。后者指的是 Database 中的数据在某一时刻的状态,而 WDR 创立的“快照”是指将某一时刻查问到的零碎视图的内容保留在专门的表格中。

WDR 创立的快照保留在 dbms_om schema 下的表格中。每个零碎视图对应一个表格,表格的名字 =“dbms_om.snap_”+ 视图名称。例如 PGXC_WORKLOAD_SQL_COUNT 视图的快照保留在 dbms_om.snap_pgxc_workload_sql_count 表格中。

WDR 反对以两种形式创立快照。一种是由后盾线程定期创立,工夫距离由 wdr_snapshot_interval 参数指定,默认为 1 小时创立一次。另一种是执行 create_wdr_snapshot 零碎函数实时创立,留神该函数须要管理员权限。

postgres=# select create_wdr_snapshot();
           create_wdr_snapshot           
------------------------------------------
 WDR snapshot request has been submitted.
(1 row)

无论以何种形式创立,都须要将 enable_wdr_snapshot 参数设为 on。

每次打完快照,dbms_om 下 snapshot 相干的表格中都会减少若干行。能够通过表格 dbms_om.snapshot 查看目前已有快照的 ID 和创立起止工夫。例如:

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 开始创立,到 2021-05-29 12:36:39 创立实现。snapshot_id 是每次快照的惟一标识。

WDR 每次会对多个零碎视图打快照,单个视图快照的起止工夫能够通过 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 设置,范畴 1~15 天,默认是 8 天,也就是说默认 8 天前创立的快照会被删除。如果想保留更久的快照数据,须要用户本人做转储。

3. 生成 WDR 报告

有了快照后便能够对性能监测数据进行计算剖析,生成报告供用户查看。不同的剖析角度和剖析形式能够失去不同的报告。目前 WDR 反对比照前后两次快照数据,生成该时间段的性能监测报告,简称“WDR 报告”。

因为 GaussDB(DWS)是分布式数据库,由多个节点组成,节点又分为 CN(Coordinator)和 DN(Datanode),相应地 WDR 报告也分为集群(cluster)和单节点(node)两种范畴(scope)。两种 scope 的报告内容有所不同,前者由集群总体的性能数据组成,后者针对单个节点的性能体现进行剖析计算。对于单节点 scope 的报告,CN 和 DN 上的报告内容也有所不同。报告 scope 在生成报告时由用户指定。

GaussDB(DWS)提供了零碎函数 generate_wdr_report()用于创立 WDR 报告。生成报告前,首先需确定起止 snapshot_id。通过查问 dbms_om.snapshot 表格,针对感兴趣的时间段,获得两个工夫点对应的 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)

通过以上查问失去该时间段对应的起止 snapshot_id 别离是 2147 和 2152。

下一步,确定生成报告的类型。以后版本反对生成 3 种类型的 WDR:摘要型(summary),具体型(detail)和全副型(all)。摘要型只包含简要剖析计算结果,具体型只蕴含具体的指标数据,全副型包含摘要型和具体型的全部内容。

最初,执行 generate_wdr_report()函数生成 WDR 报告。例如生成 2021-02-21 03:00:00 和 2021-02-21 04:00:00 之间的摘要型集群范畴 WDR 报告,可执行:

postgres=# select generate_wdr_report(2147, 2152, 'summary', 'cluster', '');
                           generate_wdr_report                            
--------------------------------------------------------------------------
 Report summary-cluster-2147-2152-20210301125740.html has been generated.
(1 row)

要生成节点 cn_5001 在 2021-02-21 03:00:00 和 2021-02-21 04:00:00 之间的全副型 WDR 报告,可执行:

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 节点的 pg_log 目录下,能够用 web 浏览器关上:

图 2 WDR 报告

报告中的各局部默认为开展状态,如果双击题目,相干局部内容会收起,题目前“-”变为“+”,如图 3 所示:

图 3 收起后的 WDR 报告款式

报告中各指标的含意可参考产品文档。如何使用 WDR 报告剖析和定位问题将在后续的文章中探讨。

4. 注意事项

如前文所述,WDR 个性依赖于各种数据库内核监测性能提供数据。出于性能思考,有些内核监测性能默认处于敞开状态,须要通过 GUC 参数开启。如果不开启,相应性能视图查问的后果是空的,也无奈生成正确的快照和 WDR 报告。如果要失去残缺的 WDR 报告,须要将下表中的 GUC 参数设为最初一列中的值:

想理解 GuassDB(DWS)更多信息,欢送微信搜寻“GaussDB DWS”关注微信公众号,和您分享最新最全的 PB 级数仓黑科技,后盾还可获取泛滥学习材料哦~

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0