更新时间:2023-10-17 GMT+08:00

WDR Snapshot生成性能报告

基于WDR Snapshot数据表汇总、统计,生成性能报告,默认初始化用户或监控管理员用户可以生成报告。

前提条件

WDR Snapshot性能快照数量大于等于2。

操作步骤

  1. 执行如下命令新建报告文件。

    touch  /home/om/wdrTestNode.html

  2. 执行以下命令连接postgres数据库。

    gsql -d postgres -p 端口号 -r

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

    select * from snapshot.snapshot;

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

    select create_wdr_snapshot();

    执行“cm_ctl query -Cdvi”,回显中“Central Coordinator State”下显示的信息即为CCN信息。

  5. 执行如下步骤生成性能报告。

    1. 执行如下命令生成格式化性能报告文件。
      \a \t \o /home/om/wdrTestNode.html

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

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

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

      表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:GaussDB中的节点名称。
      • cluster:省略/空/NULL。

      用于生成报告的两个快照应满足以下条件:

      • 两次快照之间不能有节点重启。
      • 两次快照之间不能有主备倒换。
      • 两次快照之间不能对性能指标进行reset操作。
      • 两次快照之间不能有drop database操作。
      • 生成的WDR中如果存在负数时,说明该指标不能反映数据库的表现。
      • 生成报告的时间与性能快照中的性能数据量有关系,一般在分钟级可以完成。如果超过5分钟没有完成,请尝试收集snapshot schema下的表(首先考虑snap_global_statio_all_tables,snap_global_statio_all_indexes)的统计信息ANALYZE | ANALYSE,然后再次运行报告生成。或者设置会话级语句超时时间set statement_timeout=*,主动终止报告生成。
      • 生成报告时,尽量设置客户端的字符集与openGauss数据库的字符集保持一致(可以通过set client_encoding to *去设置客户端字符集)。
    3. 执行如下命令关闭输出选项及格式化输出命令。
      \o \a \t 

  6. 在/home/om/下根据需要查看WDR报告

示例

--创建报告文件
touch  /home/om/wdrTestNode.html

--连接数据库
gsql -d postgres -p 端口号 -r

--查询已经生成的快照。
openGauss=# select * from snapshot.snapshot;
 snapshot_id |           start_ts            |            end_ts             
-------------+-------------------------------+-------------------------------
           1 | 2020-09-07 10:20:36.763244+08 | 2020-09-07 10:20:42.166511+08
           2 | 2020-09-07 10:21:13.416352+08 | 2020-09-07 10:21:19.470911+08
(2 rows)

--生成格式化性能报告wdrTestNode.html。
openGauss=# \a \t \o /home/om/wdrTestNode.html
Output format is unaligned.
Showing only tuples.

--向性能报告wdrTestNode.html中写入数据。
openGauss=# select generate_wdr_report(1, 2, 'all', 'node', 'dn_6001_6002_6003');

--关闭性能报告wdrTestNode.html。
openGauss=# \o

--生成格式化性能报告wdrTestCluster.html。
openGauss=# \o /home/om/wdrTestCluster.html

--向格式化性能报告wdrTestCluster.html中写入数据。
openGauss=# select generate_wdr_report(1, 2, 'all', 'cluster');

--关闭性能报告wdrTestCluster.html。
openGauss=# \o \a \t
Output format is aligned.
Tuples only is off.