暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

openGauss训练营学习心得——WDR报告

原创 夏克 2022-05-14
1330

引子

今天参加了《8小时玩转openGauss训练营(第三期)》的课程,感谢各位openGauss的讲师和布道者精彩的分享,课程节奏很快,每个主题内容都很丰富,相信参与的小伙伴都会受益匪浅。每一个主题都值得进一步的学习和了解,其中我印象比较深刻的是刁现峰老师的《WDR报告和性能调优》,原因是干货内容太多了,真的很烧脑~,以下文字是基于刁老师的讲解做了简单的实践,与各位同学共勉。

摘要

WDR(Workload Diagnosis Report)负载诊断报告,是openGauss的工作负载诊断报告,常用于判断openGauss长期性能问题。WDR报告基于两次不同时间点系统的性能快照数据,生成这两个时间点之间的性能表现报表。

开启WDR快照

参数简介

enable_wdr_snapshot

参数说明: 是否开启数据库监控快照功能。

该参数属于SIGHUP类型参数,请参考表GUC参数分类中对应设置方法进行设置。

取值范围: 布尔型

  • on: 打开数据库监控快照功能。
  • off: 关闭数据库监控快照功能。

默认值: off

wdr_snapshot_retention_days

参数说明: 系统中数据库监控快照数据的保留天数,超过设置的值之后,系统每隔wdr_snapshot_interval时间间隔,清理snapshot_id最小的快照数据。

该参数属于SIGHUP类型参数,请参考表GUC参数分类中对应设置方法进行设置。

取值范围: 整型,1~8。

默认值: 8

wdr_snapshot_query_timeout

参数说明: 系统执行数据库监控快照操作时,设置快照操作相关的sql语句的执行超时时间。如果语句超过设置的时间没有执行完并返回结果,则本次快照操作失败。

该参数属于SIGHUP类型参数,请参考表GUC参数分类中对应设置方法进行设置。

取值范围: 整型,100~INT_MAX(秒)。

默认值: 100s

wdr_snapshot_interval

参数说明: 后台线程Snapshot自动对数据库监控数据执行快照操作的时间间隔。

该参数属于SIGHUP类型参数,请参考表GUC参数分类中对应设置方法进行设置。

取值范围: 整型,10~60(分钟)。

默认值: 1h

查看当前wdr相关配置

postgres@omm:local=#select name, setting from pg_settings where name like '%wdr%'; name | setting -----------------------------+--------- enable_wdr_snapshot | off wdr_snapshot_interval | 60 wdr_snapshot_query_timeout | 100 wdr_snapshot_retention_days | 8 (4 rows)

开启wdr日志

omm@107707f966f0:/var/lib/mogdb/data$ gs_guc reload -D $PGDATA -c "enable_wdr_snapshot=on" expected instance path: [/var/lib/mogdb/data/postgresql.conf] gs_guc reload: enable_wdr_snapshot=on: [/var/lib/mogdb/data/postgresql.conf] server signaled Total instances: 1. Failed instances: 0. Success to perform gs_guc! omm@107707f966f0:/var/lib/mogdb/data$ gsql -d postgres -r gsql ((MogDB 2.1.1 build b5f25b20) compiled at 2022-03-21 14:42:30 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. postgres@omm:local=#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)

查看快照统计表

postgres@omm:local=#show search_path; search_path ---------------- "$user",public (1 row) postgres@omm:local=#alter session set search_path=snapshot; SET postgres@omm:local=#show search_path; search_path ------------- snapshot (1 row) postgres@omm:local=#\d List of relations Schema | Name | Type | Owner | Storage ----------+------------------------------------------+----------+-------+---------------------------------- snapshot | snap_class_vital_info | table | omm | {orientation=row,compression=no} snapshot | snap_global_bgwriter_stat | table | omm | {orientation=row,compression=no} snapshot | snap_global_ckpt_status | table | omm | {orientation=row,compression=no} snapshot | snap_global_config_settings | table | omm | {orientation=row,compression=no} snapshot | snap_global_double_write_status | table | omm | {orientation=row,compression=no} snapshot | snap_global_file_iostat | table | omm | {orientation=row,compression=no} snapshot | snap_global_file_redo_iostat | table | omm | {orientation=row,compression=no} snapshot | snap_global_instance_time | table | omm | {orientation=row,compression=no} snapshot | snap_global_memory_node_detail | table | omm | {orientation=row,compression=no} snapshot | snap_global_os_runtime | table | omm | {orientation=row,compression=no} snapshot | snap_global_os_threads | table | omm | {orientation=row,compression=no} snapshot | snap_global_pagewriter_status | table | omm | {orientation=row,compression=no} snapshot | snap_global_record_reset_time | table | omm | {orientation=row,compression=no} snapshot | snap_global_recovery_status | table | omm | {orientation=row,compression=no} snapshot | snap_global_redo_status | table | omm | {orientation=row,compression=no} snapshot | snap_global_rel_iostat | table | omm | {orientation=row,compression=no} snapshot | snap_global_replication_slots | table | omm | {orientation=row,compression=no} snapshot | snap_global_replication_stat | table | omm | {orientation=row,compression=no} snapshot | snap_global_rto_status | table | omm | {orientation=row,compression=no} snapshot | snap_global_shared_memory_detail | table | omm | {orientation=row,compression=no} snapshot | snap_global_stat_all_indexes | table | omm | {orientation=row,compression=no} snapshot | snap_global_stat_all_tables | table | omm | {orientation=row,compression=no} snapshot | snap_global_stat_bad_block | table | omm | {orientation=row,compression=no} snapshot | snap_global_stat_database | table | omm | {orientation=row,compression=no} snapshot | snap_global_stat_database_conflicts | table | omm | {orientation=row,compression=no} snapshot | snap_global_stat_db_cu | table | omm | {orientation=row,compression=no} snapshot | snap_global_stat_user_functions | table | omm | {orientation=row,compression=no} snapshot | snap_global_statement_count | table | omm | {orientation=row,compression=no} snapshot | snap_global_statio_all_indexes | table | omm | {orientation=row,compression=no} snapshot | snap_global_statio_all_sequences | table | omm | {orientation=row,compression=no} snapshot | snap_global_statio_all_tables | table | omm | {orientation=row,compression=no} snapshot | snap_global_thread_wait_status | table | omm | {orientation=row,compression=no} snapshot | snap_global_threadpool_status | table | omm | {orientation=row,compression=no} snapshot | snap_global_transactions_prepared_xacts | table | omm | {orientation=row,compression=no} snapshot | snap_global_transactions_running_xacts | table | omm | {orientation=row,compression=no} snapshot | snap_global_wait_events | table | omm | {orientation=row,compression=no} snapshot | snap_global_workload_transaction | table | omm | {orientation=row,compression=no} snapshot | snap_seq | sequence | omm | snapshot | snap_statement_responsetime_percentile | table | omm | {orientation=row,compression=no} snapshot | snap_summary_file_iostat | table | omm | {orientation=row,compression=no} snapshot | snap_summary_file_redo_iostat | table | omm | {orientation=row,compression=no} snapshot | snap_summary_rel_iostat | table | omm | {orientation=row,compression=no} snapshot | snap_summary_stat_all_indexes | table | omm | {orientation=row,compression=no} snapshot | snap_summary_stat_all_tables | table | omm | {orientation=row,compression=no} snapshot | snap_summary_stat_bad_block | table | omm | {orientation=row,compression=no} snapshot | snap_summary_stat_database | table | omm | {orientation=row,compression=no} snapshot | snap_summary_stat_database_conflicts | table | omm | {orientation=row,compression=no} snapshot | snap_summary_stat_user_functions | table | omm | {orientation=row,compression=no} snapshot | snap_summary_statement | table | omm | {orientation=row,compression=no} snapshot | snap_summary_statement_count | table | omm | {orientation=row,compression=no} snapshot | snap_summary_statio_all_indexes | table | omm | {orientation=row,compression=no} snapshot | snap_summary_statio_all_sequences | table | omm | {orientation=row,compression=no} snapshot | snap_summary_statio_all_tables | table | omm | {orientation=row,compression=no} snapshot | snap_summary_transactions_prepared_xacts | table | omm | {orientation=row,compression=no} snapshot | snap_summary_transactions_running_xacts | table | omm | {orientation=row,compression=no} snapshot | snap_summary_user_login | table | omm | {orientation=row,compression=no} snapshot | snap_summary_workload_sql_count | table | omm | {orientation=row,compression=no} snapshot | snap_summary_workload_sql_elapse_time | table | omm | {orientation=row,compression=no} snapshot | snap_summary_workload_transaction | table | omm | {orientation=row,compression=no} snapshot | snapshot | table | omm | {orientation=row,compression=no} snapshot | tables_snap_timestamp | table | omm | {orientation=row,compression=no} (61 rows)

手动生产快照

SNAPSHOT.SNAPSHOT

SNAPSHOT表记录当前系统中存储的WDR快照数据的索引信息、开始、结束时间。只能在系统库中查询到结果,在用户库中无法查询。

表 1 SNAPSHOT表属性

名称 类型 描述 示例
snapshot_id bigint WDR快照序号。 1
start_ts timestamp WDR快照的开始时间。 2019-12-28 17:11:27.423742+08
end_ts timestamp WDR快照的结束时间。 2019-12-28 17:11:43.67726+08
postgres@omm:local=#select * from snapshot.snapshot; snapshot_id | start_ts | end_ts -------------+-------------------------------+------------------------------- 1 | 2022-05-02 11:19:37.239977+00 | 2022-05-02 11:19:37.865708+00 (1 row) postgres@omm:local=#select create_wdr_snapshot(); create_wdr_snapshot ----------------------------------------- WDR snapshot request has been submitted (1 row) postgres@omm:local=#select * from snapshot.snapshot; snapshot_id | start_ts | end_ts -------------+-------------------------------+------------------------------- 1 | 2022-05-02 11:19:37.239977+00 | 2022-05-02 11:19:37.865708+00 2 | 2022-05-02 11:42:28.047396+00 | 2022-05-02 11:42:28.617173+00 (2 rows)

生成性能报告

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

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

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

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

b. 执行如下命令将查询到的信息写入性能报告中。

select generate_wdr_report(begin_snap_id bigint, end_snap_id bigint, report_type cstring, report_scope cstring, node_name cstring);

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

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

执行操作

postgres@omm:local=#select * from pg_node_env; node_name | host | process | port | installpath | datapath | log_directory -----------+-----------+---------+------+------------------+---------------------+--------------- mogdb | localhost | 1 | 5432 | /usr/local/mogdb | /var/lib/mogdb/data | pg_log (1 row) postgres@omm:local=# postgres@omm:local=#\a \t \o wdr_20220502.html postgres@omm:local=#select generate_wdr_report(1,2,'all','node','mogdb');

c.执行如下命令关闭输出选项及格式化输出命令。

\o \a \t

查看报告

在这里插入图片描述
在这里插入图片描述

课程摘录

下面几张是整个课程中小伙伴们分享的几张图片,共参考~
6ab6d4456a0a000e51373d44f628632.png

43e585f51b894528ff173a67430158a.png

8854873b4c60d5a131ede5417ff1909.png

37d1244e458cf069d81255f30fcdfbb.png

6394f47347924166c383368d709731f.png

3eb60570912c539c1e3d8151eda3b19.png

993ede3906833890880480519bc4b44.png

1980ec9c48c95e9f550fb454a1af14c.png

4c4a366257ca1b97f842381607bbf54.png

1de7796e30cc4e664e153ab94ec60c4.png

bd3c014e3cfcddd82924a9922445670.png

4993eced90e6e0d5a0f74cce5d7a722.png

ed390edec5140dced759f23b4172524.png

2dd47bf34771ce6b5788edd2a7c85ca.png

61baaccc96755c4f1eec7d9b90271c8.png

01b849bdc33bf22d405f228590e8970.png

b808f0f9df37d2aef6714c39372a65f.png

80a0d74eb641c7c041f7e5140622d35.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论