WDR Snapshot生成性能报告

基于WDR Snapshot数据表汇总、统计,生成性能报告。

前提条件

WDR Snasphot在启动后(即参数enable_wdr_snapshot为on时),且快照数量大于等于2。

操作步骤

  1. 执行如下命令查询已经生成的快照,以获取快照的snapshot_id。

    1. select * from snapshot.snapshot;
  2. (可选)执行如下命令手动创建快照。数据库中只有一个快照或者需要查看在当前时间段数据库的监控数据,可以选择手动执行快照操作,该命令需要用户具有sysadmin权限。

    1. select create_wdr_snapshot();
  3. 执行如下步骤生成性能报告。

    1. 执行如下命令生成格式化性能报告文件。

      1. \a \t \o 服务器文件路径

      上述命令涉及参数说明如下:

      • \a:切换非对齐模式。
      • \t:切换输出的字段名的信息和行计数脚注。
      • \o:把所有的查询结果发送至服务器文件里。
      • 服务器文件路径:生成性能报告文件存放路径。用户需要拥有此路径的读写权限。
    2. 执行如下命令将查询到的信息写入性能报告中。

      1. select generate_wdr_report(begin_snap_id Oid, end_snap_id Oid, varchar report_type, varchar report_scope, int node_name );

      命令中涉及的参数说明如下。

      表 1 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。

      • summary:汇总数据。
      • detail:明细数据。
      • all:包含summary和detail。

      report_scope

      指定生成report的范围,可以为cluster或者node。

      • cluster:数据库级别的信息。
      • node:节点级别的信息。

      node_name

      在report_scope指定为node时,需要把该参数指定为对应节点的名称。(节点名称可以执行select * from pg_node_env;查询)。

      在report_scope为cluster时,该值可以省略或者指定为空或NULL。

      • node:openGauss中的节点名称。
      • cluster:省略/空/NULL。
    3. 执行如下命令关闭输出选项及格式化输出命令。

      1. \o \a \t
  4. 根据需要查看WDR报告内容。

    表 2 WDR报表主要内容

    项目

    描述

    Database Stat(数据库范围)

    数据库维度性能统计信息:事务,读写,行活动,写冲突,死锁等。

    Load Profile(数据库范围)

    数据库维度的性能统计信息:CPU时间,DB时间,逻辑读/物理读,IO性能,登入登出,负载强度,负载性能表现等。

    Instance Efficiency Percentages(数据库/节点范围)

    数据库级或者节点Buffer Hit(缓冲命中率),Effective CPU(CPU使用率),WalWrite NoWait(获取Wal Buffer成功率),Soft Parse(软解析率),Non-parse CPU(CPU非解析时间比例)。

    Top 10 Events by Total Wait Time(节点范围)

    最消耗时间的事件。

    Wait Classes by Total Wait Time(节点范围)

    最消耗时间的等待事件分类。

    Host CPU(节点范围)

    主机CPU消耗。

    Memory Statistics(节点范围)

    内核内存使用分布。

    Object stats(节点范围)

    表,索引维度的性能统计信息。

    Database Configuration(节点范围)

    节点配置。

    SQL Statistics(节点范围)

    SQL语句各个维度性能统计:端到端时间,行活动,缓存命中,CPU消耗,时间消耗细分。

    SQL Detail(节点范围)

    SQL语句文本详情。

示例

  1. --查询已经生成的快照。
  2. postgres=# select * from snapshot.snapshot;
  3. snapshot_id | start_ts | end_ts
  4. -------------+-------------------------------+-------------------------------
  5. 1 | 2020-09-07 10:20:36.763244+08 | 2020-09-07 10:20:42.166511+08
  6. 2 | 2020-09-07 10:21:13.416352+08 | 2020-09-07 10:21:19.470911+08
  7. (2 rows)
  8. --生成格式化性能报告wdrTestNode.html
  9. postgres=# \a \t \o /home/om/wdrTestNode.html
  10. Output format is unaligned.
  11. Showing only tuples.
  12. --向性能报告wdrTestNode.html中写入数据。
  13. postgres=# select generate_wdr_report(1, 2, 'all', 'node', 'dn');
  14. --关闭性能报告wdrTestNode.html
  15. postgres=# \o
  16. --生成格式化性能报告wdrTestCluster.html
  17. postgres=# \o /home/om/wdrTestCluster.html
  18. --向格式化性能报告wdrTestCluster.html中写入数据。
  19. postgres=# select generate_wdr_report(1, 2, 'all', 'cluster', '');
  20. --关闭性能报告wdrTestCluster.html
  21. postgres=# \o \a \t
  22. Output format is aligned.
  23. Tuples only is off.