写点什么

带你了解 WDR-GaussDB(DWS) 的性能监测报告

发布于: 1 小时前

​​​​摘要:通过本文,读者可知晓什么是 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 的执行次数:



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


图 1 WDR 原理

2.   创建性能快照


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


注意不要将这里的“快照”与数据库的 Snapshot 混淆。后者指的是 Database 中的数据在某一时刻的状态,而 WDR 创建的“快照”是指将某一时刻查询到的系统视图的内容保存在专门的表格中。


WDR 创建的快照保存在 dbms_omschema 下的表格中。每个系统视图对应一个表格,表格的名字=“dbms_om.snap_”+视图名称。例如 PGXC_WORKLOAD_SQL_COUNT 视图的快照保存在 dbms_om.snap_pgxc_workload_sql_count 表格中。


WDR 支持以两种方式创建快照。一种是由后台线程定期创建,时间间隔由 wdr_snapshot_interval 参数指定,默认为 1 小时创建一次。另一种是执行 create_wdr_snapshot 系统函数实时创建,注意该函数需要管理员权限。



无论以何种方式创建,都需要将 enable_wdr_snapshot 参数设为 on。


每次打完快照,dbms_om 下 snapshot 相关的表格中都会增加若干行。可以通过表格 dbms_om.snapshot 查看目前已有快照的 ID 和创建起止时间。例如:



以第一行为例,可知 ID=312 的快照从 2021-05-29 12:36:32 开始创建,到 2021-05-29 12:36:39 创建完成。snapshot_id 是每次快照的唯一标识。


WDR 每次会对多个系统视图打快照,单个视图快照的起止时间可以通过 dbms_om.tables_snap_timestamp 表格查询。以 ID=312 的快照为例:



相比 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 之间的性能状况:



通过以上查询得到该时间段对应的起止 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 报告,可执行:



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



成功后,会提示“$报告文件名 has beengenerated”。报告文件默认位放在当前 CN 节点的 pg_log 目录下,可以用 web 浏览器打开:


图 2 WDR 报告


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


图 3 收起后的 WDR 报告样式


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

4.   注意事项

         

如前文所述,WDR 特性依赖于各种数据库内核监测功能提供数据。出于性能考虑,有些内核监测功能默认处于关闭状态,需要通过 GUC 参数开启。如果不开启,相应性能视图查询的结果是空的,也无法生成正确的快照和 WDR 报告。如果要得到完整的 WDR 报告,需要将下表中的 GUC 参数设为最后一列中的值:



想了解 GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的 PB 级数仓黑科技,后台还可获取众多学习资料哦~


点击关注,第一时间了解华为云新鲜技术~

发布于: 1 小时前阅读数: 2
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
带你了解WDR-GaussDB(DWS) 的性能监测报告