WDR Snapshot生成性能报告
基于WDR Snapshot数据表汇总、统计,生成性能报告,默认初始化用户或监控管理员用户可以生成报告。
前提条件
WDR Snapshot启动(即GUC参数enable_wdr_snapshot为on时),且快照数量大于等于2。
操作步骤
- 执行如下命令新建报告文件。
touch /home/om/wdrTestNode.html
- 执行以下命令连接postgres数据库。
gsql -d postgres -p 端口号 -r
- 执行如下命令查询已经生成的快照,以获取快照的snapshot_id。
select * from snapshot.snapshot;
- (可选)执行如下命令手动创建快照。数据库中只有一个快照或者需要查看在当前时间段数据库的监控数据,可以选择手动执行快照操作,该命令需要用户具有sysadmin权限。
select create_wdr_snapshot();
- 执行如下命令,在本地生成HTML格式的WDR报告。
- 执行如下命令,设置报告格式。\a: 不显示表行列符号, \t: 不显示列名 ,\o: 指定输出文件。
gsql> \a gsql> \t gsql> \o /home/om/wdrTestNode.html
- 执行如下命令,生成HTML格式的WDR报告。
gsql> select generate_wdr_report(begin_snap_id Oid, end_snap_id Oid, int report_type, int report_scope, int node_name );
示例一,生成数据库实例级别的报告:select generate_wdr_report(1, 2, 'all', 'cluster',null);
示例二,生成某个节点的报告:select generate_wdr_report(1, 2, 'all', 'node', pgxc_node_str()::cstring);
当前集中式的节点名固定是“dn_6001_6002_6003”,也可直接代入。
表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=*,主动终止报告生成。
- 生成报告时,尽量设置客户端的字符集与GaussDB数据库的字符集保持一致(可以通过set client_encoding to *去设置客户端字符集)。
- 执行如下命令关闭输出选项及格式化输出命令。
\o \a \t
- 执行如下命令,设置报告格式。\a: 不显示表行列符号, \t: 不显示列名 ,\o: 指定输出文件。
- 在/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.