更新时间:2024-09-05 GMT+08:00

使用pg_profile_pro插件

操作场景

pg_profile_pro是一款用于监测RDS for PostgreSQL实例性能及运行状况的插件,针对SQL语句、表、索引、函数、事务、vacuum等,pg_profile_pro提供了监测数据报表,能够尽可能发现数据库存在的或潜在的性能问题。

该插件基于PostgreSQL的pg_stat_statements视图,会在用户的实例中创建历史统计,并生成统计样本,定期的统计样本用于生成监测报告,帮助识别最耗费资源的活动等。

因发现插件存在缺陷,现暂时关闭支持,我们会在缺陷修复后重新开放,给您造成不便敬请谅解。

约束条件

仅RDS for PostgreSQL 12支持。

操作步骤

  1. root用户连接postgres数据库,获取样本列表。

    # psql --host=<RDS_ADDRESS> --port=<DB_PORT>--dbname=postgres --username=root -c "select * from profile.show_samples();"

    表1 参数说明

    参数

    说明

    RDS_ADDRESS

    RDS实例的IP地址。

    DB_PORT

    RDS数据库实例的端口。

    根据提示输入root用户密码。

    Password for user root:

    回显结果示例如下:

     sample |      sample_time       | dbstats_reset | clustats_reset | archstats_reset
    --------+------------------------+---------------+----------------+-----------------
          1 | 2021-04-02 17:15:49+08 |               |                |
          2 | 2021-04-02 17:25:57+08 |               |                |
          3 | 2021-04-02 17:36:04+08 |               |                |
    (3 rows)

    请以实际查询结果为准。

  2. 以root用户连接postgres数据库,参考以下方式获取报告。

    方式一:通过样本ID获取报告

    # psql --host=<RDS_ADDRESS> --port=<DB_PORT> --dbname=postgres --username=root -Aqtc "select profile.get_report(<sample_start_id>, <sample_end_id>)" -o <filename>.html
    表2 参数说明

    参数

    说明

    RDS_ADDRESS

    RDS实例的IP地址。

    DB_PORT

    RDS数据库实例的端口。

    sample_start_id

    报告包含起始样本ID。

    sample_end_id

    报告包含结束样本ID。

    filename

    报告内容保存的文件名,支持指定相对路径或绝对路径。

    其中sample_start_id 必须小于sample_end_id,否则无法生成报告。

    方法二:通过指定时间段获取报告

    # psql --host=<RDS_ADDRESS> --port=<DB_PORT> --dbname=postgres --username=root -Aqtc "select profile.get_report(tstzrange('sample_start_time', 'sample_end_time'))" -o <filename>.html

    表3 参数说明

    参数

    说明

    RDS_ADDRESS

    RDS实例的IP地址。

    DB_PORT

    RDS数据库实例的端口。

    sample_start_time

    报告包含起始时间。

    sample_end_time

    报告包含结束时间。

    filename

    报告内容保存的文件名,支持指定相对路径或绝对路径。

    目前相关参数保持默认值,详情如下:

    • 采样周期(单位:分钟):10
    • 采样保留时间(单位:天):7
    • 显示记录数:20

参数配置

表4 影响采样报告的参数

参数名称

默认值

是否需要重启

功能描述

备注

pg_profile_pro.topn

20

控制每个排序报表中需要上报对象(语句、关系等)的数量。

该参数会影响样本的大小,如果您想在报表中显示更多的对象,样本中需要保留的对象也会越多。

pg_profile_pro.max_sample_age

3

样本的保留时间(单位:天)。保留时间超过参数时间的样本将在下一次采样时自动删除。

参数最小粒度为天。

pg_profile_pro.track_sample_timings

off

启用此参数后,pg_profile_pro将跟踪详细的采样时间。

开启后,会记录每一细分采样的耗时,会增加空间占用。

pg_profile_pro.period

3600

采样周期(单位:秒)。

用于控制样本的采样周期。

该参数会影响样本的大小,采样周期越短,单位时间内的样本越多,插件表中保留的对象也会越多。

pg_profile_pro.enable

on

采样开关,用于控制插件是否采样。

  • on:是。
  • off:否。

插件生成的报告依赖于样本,关闭了采样那么就无法生成最新的报告,但是可以查看历史采样的报告。

表格中参数默认值为最新RDS版本的默认值,其他版本可能会有不同。

报告示例

报告由三部分组成,包含标题、目录和报表。

  • 标题

    报告标题包含以下内容:报告起止样本ID、pg_profile_pro内核版本、服务名称、报告起止时间。

    图1 报告标题
  • 目录

    每层目录分别链接一个报表,用户可以通过目录总览报告中所有报表,也可通过单击链接查看报表内容。

    如下图所示:

  • 报表

    报告呈现丰富的报表,从不同的维度、关注点来展现数据库的性能情况。

    • 在每个报表后方会针对该报表关注点的提出建议。
      图2 报表及建议
    • 在报表中,将鼠标悬停在列标题上,可以看到对列标题的注解(中英文)。
      图3 列标题注解