WDR性能诊断报告生成与分析

WDR性能诊断报告生成与分析

WDR概述

WDR报告(Workload Diagnosis Report)是GaussDB提供的性能诊断和分析工具。WDR报告描述了一段时间内整个系统资源的使用情况,可以用来了解数据库的整体运行情况。

  • GaussDB定期创建性能快照(WDR Snapshot),插入数据库系统表。
  • WDR快照默认每小时生成一次,保留8天
  • 生成WDR报告的两次快照中间不能有节点重启。
  • 生成WDR报告的两次快照中间不能有DROP DATABASE操作。
  • 生成WDR报告的两次快照中间不能有主备切换。
  • 不能重置dbe_perf.statement性能视图。

与WDR报告相关的GUC参数:

GUC参数默认值含义
enable_wdr_snapshoton是否开启WDR快照自动生成
wdr_snapshot_interval60WDR自动生成快找的周期(分钟)
wdr_shapshot_retention_days8WDR快照保留的天数

WDR报告分为summary、detail、all三个级别,前两个级别包含的信息如下:

报告级别包含内容
SUMMARY库级别统计数据(事务、IO、文件读写耗时等),负载信息(CPU时间、表IO、SQL量、事务量、P80/P95等),Buffer命中率,SQL软解析比例,Top Events,Wait Classes,Host CPU,IO Profile,内存统计信息等
DETAILTime Model(DB time/CPU time/Data_IO_time),SQL Statistics,Wait Events,Cache IO Stats,主备复制状态,表和索引信息(vacuum/analyze/坏块/更新数/死元组数等),数据库GUC配置信息等

报告生成

连接到数据库:

gsql -p30100 -d postgres -Uroot -W口令
  1. 查询已经生成的快照。
gaussdb=> select * from snapshot.snapshot;
 snapshot_id |           start_ts            |            end_ts             | version 
-------------+-------------------------------+-------------------------------+---------
         335 | 2024-09-27 06:35:34.419665+08 | 2024-09-27 06:35:36.592285+08 |       1
         336 | 2024-09-27 07:35:35.369409+08 | 2024-09-27 07:35:37.541394+08 |       1
         337 | 2024-09-27 08:35:36.189165+08 | 2024-09-27 08:35:38.38783+08  |       1
         338 | 2024-09-27 09:35:37.137452+08 | 2024-09-27 09:35:39.259274+08 |       1
         339 | 2024-09-27 10:35:37.961745+08 | 2024-09-27 10:35:40.119565+08 |       1
         340 | 2024-09-27 11:35:38.771877+08 | 2024-09-27 11:35:40.926857+08 |       1
...
         500 | 2024-11-15 00:15:01.258812+08 | 2024-11-15 00:15:03.498959+08 |       1
         501 | 2024-11-15 01:15:02.276443+08 | 2024-11-15 01:15:04.448962+08 |       1
         502 | 2024-11-15 02:15:03.089845+08 | 2024-11-15 02:15:05.325526+08 |       1
         503 | 2024-11-15 03:15:04.086822+08 | 2024-11-15 03:15:06.46107+08  |       1
         504 | 2024-11-15 04:15:04.279436+08 | 2024-11-15 04:15:06.522976+08 |       1
         505 | 2024-11-15 05:15:04.293803+08 | 2024-11-15 05:15:06.525413+08 |       1
         506 | 2024-11-15 06:15:05.184283+08 | 2024-11-15 06:15:07.332549+08 |       1
         507 | 2024-11-15 07:15:06.024034+08 |                               |       1
  1. (按需)手动创建快照。
gaussdb=> select create_wdr_snapshot();
           create_wdr_snapshot           
-----------------------------------------
 WDR snapshot request has been submitted
(1 row)
  1. 调整输出格式和报告生成路径。
\a   --切换内容为对齐/非对齐模式,生成WDR报告时选择unaligned非对齐   
\t   --切换输出的字段名信息和行计数脚注
\o   --指定报告生成的名称和路径

Formatting
  \a                     toggle between unaligned and aligned output mode
  \t [on|off]            show only rows (currently off)
  \o [FILE]              send all query results to file or |pipe
  
gaussdb=> \a
Output format is aligned.
gaussdb=> \a
Output format is unaligned.  

gaussdb=> \t off
Tuples only is off.
gaussdb=> \t on
Showing only tuples.

gaussdb=> \o /home/omm/wdr_20241122_01.html
  1. 执行命令生成WDR报告。
select generate_wdr_report(begin_snap_id,end_snap_id,report_type,report_scope,node_name);

gaussdb=> select * from pg_node_env;   --检查当前的节点名
gaussdb=> \o /home/omm/wdr_20241122_node.html
gaussdb=> select generate_wdr_report(504,505,'all','node','dn_6001');   --节点级别报告

gaussdb=> \o /home/omm/wdr_20241122_cluster.html
gaussdb=> select generate_wdr_report(504,505,'all','cluster');   --集群级别报告

其中:

  • begin_snap_id:WDR报告开始的快照ID。
  • end_snap_id:WDR报告结束的快照ID。
  • report_type:WDR报告应包含的内容,取值为summary、detail、或者all。
  • report_scope:WDR报告的范围,取值为node或者cluster。
  • node_name:当report_scope=node时,指定节点名称(取自pg_node_envpgxc_node表)。

分析案例

  1. P80/P95响应时间

查看Load Profile章节的SQL response time P80/P95。

  1. Top SQL

查看SQL Statistics章节中的各个部分:

  • SQL ordered by Elapsed Time
  • SQL ordered by CPU Time
  • SQL ordered by Rows Returned
  • SQL ordered by Row Read
  • SQL ordered by Physical Reads
  • SQL ordered by Logical Reads
  • SQL ordered by Executions
  1. Buffer命中率低

查看Instance Efficiency Percentages中的Buffer Hit是否在97%以上。

如果Buffer命中率低,考虑从以下两个方面优化:

  • shared_buffers是否设置过小;
  • SQL扫描页面是否过多,导致频繁触发buffer淘汰。
  1. 异常等待事件

查看Top 10 Events by Total Wait Time中的Event排序。

  1. 时间模型

查看Time Model中的数据库耗时分布。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GottdesKrieges

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值