WDR(Wordload Dignosis Report)报告简介
WDR报告是磐维数据库的工作负载诊断报告,它基于两个不同时间点系统的性能快照数据WDR Snapshot,生成这两个时间点之间的性能报告。
WDR Snapshot的数据来源于DBE_PERF Schema内的视图。通过WDR报告,我们可以深入了解数据库在特定时间段内的运行情况,从而发现潜在的性能问题。
生成WDR报告的前提条件:WDR Snapshot启动(即参数enable_wdr_snapshot为on时),且快照数量大于等于2。
WDR Snapshot相关参数及说明
postgres=# select name,setting from pg_settings where name like '%wdr%'; name | setting -----------------------------+--------- enable_wdr_snapshot | on wdr_snapshot_interval | 60 wdr_snapshot_query_timeout | 100 wdr_snapshot_retention_days | 8 (4 rows)
# WDR Snapshot相关参数说明
1、enable_wdr_snapshot参数 参数说明:是否开启数据库监控快照功能。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型。on:打开数据库监控快照功能。off:关闭数据库监控快照功能。 默认值:off 表1链接:https://docs-opengauss.osinfra.cn/zh/docs/5.0.0/docs/DatabaseReference/%E9%87%8D%E8%AE%BE%E5%8F%82%E6%95%B0.html#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846
2、wdr_snapshot_interval参数 参数说明:后台线程Snapshot自动对数据库监控数据执行快照操作的时间间隔。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,10~60(分钟)。 默认值:1h 表1链接:https://docs-opengauss.osinfra.cn/zh/docs/5.0.0/docs/DatabaseReference/%E9%87%8D%E8%AE%BE%E5%8F%82%E6%95%B0.html#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846
3、wdr_snapshot_query_timeout 参数说明:系统执行数据库监控快照操作时,设置快照操作相关的sql语句的执行超时时间。如果语句超过设置的时间没有执行完并返回结果,则本次快照操作失败。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,100~INT_MAX(秒)。默认值:100s 表1链接:https://docs-opengauss.osinfra.cn/zh/docs/5.0.0/docs/DatabaseReference/%E9%87%8D%E8%AE%BE%E5%8F%82%E6%95%B0.html#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846
4、wdr_snapshot_retention_days 参数说明:系统中数据库监控快照数据的保留天数。当数据库运行过程期间所生成的快照量数超过保留天数内允许生成的快照数量的最大值(保留天数的分钟值 / 自动生成时间间隔的分钟值)时,系统将每隔wdr_snapshot_interval时间间隔,清理snapshot_id最小的快照数据。该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,1~8。 默认值:8 表1链接:https://docs-opengauss.osinfra.cn/zh/docs/5.0.0/docs/DatabaseReference/%E9%87%8D%E8%AE%BE%E5%8F%82%E6%95%B0.html#zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846
创建WDR Snapshot
生成快照数据需参数 enable_wdr_snapshot=on。当开启enable_wdr_snapshot参数时,数据库默认每小时自动执行一次snapshot操作。在诊断问题时,也可以根据需要手动使用create_wdr_snapshot函数创建snapshot,命令如下:
postgres=# select create_wdr_snapshot(); create_wdr_snapshot ----------------------------------------- WDR snapshot request has been submitted (1 row)
查看WDR Snapshot
postgres=# select * from snapshot.snapshot offset 10; snapshot_id | start_ts | end_ts -------------+-------------------------------+------------------------------- 75 | 2024-07-16 20:27:47.763081+08 | 2024-07-16 20:27:50.949935+08 76 | 2024-07-16 21:27:48.578829+08 | 2024-07-16 21:27:49.861373+08 77 | 2024-07-16 22:27:48.659757+08 | 2024-07-16 22:27:51.023853+08 78 | 2024-07-16 23:27:48.777153+08 | 2024-07-16 23:27:51.87062+08 79 | 2024-07-17 00:27:49.077599+08 | 2024-07-17 00:27:50.380744+08 80 | 2024-07-17 01:27:49.090532+08 | 2024-07-17 01:27:52.767099+08 81 | 2024-07-17 02:27:50.065647+08 | 2024-07-17 02:27:53.767576+08 (7 rows)
创建WDR报告
1、执行如下命令,设置报告格式。\a: 不显示表行列符号, \t: 不显示列名 ,\o: 指定输出文件。
gsql> \a \t \o /home/omm/wdrTestNode.html
2、gsql客户端执行如下命令,生成HTML格式的WDR报告。
select generate_wdr_report(begin_snap_id Oid, end_snap_id Oid, int report_type, int report_scope, int node_name );
# generate_wdr_report函数的参数说明:
begin_snap_id:要查看的某段时间性能的开始的snapshot的id(表snapshot.snaoshot中的snapshot_id)
end_snap_id: 结束snapshot的id,默认end_snap_id大于begin_snap_id(表snapshot.snaoshot中的snapshot_id)
report_type: 指定生成report的类型。取值范围:summary/detail/all。all即同时包含summary和detail。
report_scope: 指定生成report的范围,取值范围: cluster:集群 node:集群中某个节点。
node_name: 当report_scope指定为single node时,需要把该参数指定为对应节点的名称。当report_scope为cluster时,该值可以省略或者指定为空或NULL。 #
示例一,生成集群级别的报告: select generate_wdr_report(75,76,'all','cluster',null); #
示例二,生成某个节点的报告(node_name从pgxc_node_str()::cstring获得): select generate_wdr_report(75,76,'all','node', pgxc_node_str()::cstring); #
示例三,生成某个节点的报告(node_name从pg_node_env中查询获得): postgres=# select node_name from pg_node_env; node_name ------------------- dn_6001_6002_6003 (1 row) select generate_wdr_report(75,76,'all','node', 'dn_6001_6002_6003'); 3、关闭格式化输出 gsql> \a \t \o
WDR报告主要内容
项目 | 描述 |
---|---|
Database Stat(集群范围) | 数据库维度性能统计信息:事务,读写,行活动,写冲突,死锁等。 |
Load Profile(集群范围) | 集群维度的性能统计信息:CPU时间,DB时间,逻辑读/物理读,IO性能,登入登出,负载强度,负载性能表现等。 |
Instance Efficiency Percentages(集群/节点范围) | 集群级或者节点缓冲命中率。 |
IO Profile(集群/节点范围) | 集群或者节点维度的IO的使用情况。 |
Top 10 Events by Total Wait Time(节点范围) | 最消耗时间的事件。 |
Wait Classes by Total Wait Time(节点范围) | 最消耗时间的等待时间分类。 |
Host CPU(节点范围) | 主机CPU消耗。 |
Memory Statistics(节点范围) | 内核内存使用分布。 |
Time Model(节点范围) | 节点范围的语句的时间分布信息。 |
Wait Events(节点范围) | 节点级别的等待事件的统计信息。 |
Cache IO Stats (集群/节点范围) | 用户的表、索引的IO的统计信息。 |
Utility status (节点范围) | 复制槽和后台checkpoint的状态信息。 |
Object stats(集群/节点范围) | 表、索引维度的性能统计信息。 |
Configuration settings(节点范围) | 节点配置。 |
SQL Statistics(集群/节点范围) | SQL语句各个维度性能统计:端到端时间,行活动,缓存命中,CPU消耗,时间消耗细分。 |
SQL Detail(集群/节点范围) | SQL语句文本详情。 |
生成WDR报告后,我们就可以开始分析和诊断数据库的性能问题,从而进行优化。
日常快速生成WDR方法
su - omm cd ~ touch /home/omm/WDR_`date "+%Y%m%d_%H%M%S"`.html gsql -d postgres -r select * from snapshot.snapshot order by start_ts desc limit 20; select * from pg_node_env; \a \t \o /home/omm/WDR_`date "+%Y%m%d_%H%M%S"`.html select generate_wdr_report(begin_snap_id, end_snap_id, 'all', 'cluster',null); \o \a \t
总结
WDR报告是openGauss/磐维数据库的重要性能诊断工具,它能够帮助我们深入了解数据库在特定时间段内的性能表现,从而发现潜在的性能问题并进行优化。我们在日常工作中要尽可能地使用这一利器,提升数据库的性能。
标签:Dignosis,cn,磐维,Wordload,wdr,WDR,snapshot,zh,节点 From: https://www.cnblogs.com/yuweijade/p/18499021