
# 使用pg_profile_pro插件
#### 操作场景
pg_profile_pro是一款用于监测RDS for PostgreSQL实例性能及运行状况的插件，针对SQL语句、表、索引、函数、事务、vacuum等，pg_profile_pro提供了监测数据报表，能够尽可能发现数据库存在的或潜在的性能问题。
该插件基于PostgreSQL的pg_stat_statements视图，会在用户的实例中创建历史统计，并生成统计样本，定期的统计样本用于生成监测报告，帮助识别最耗费资源的活动等。
![](https://support.huaweicloud.com/usermanual-rds-pg/public_sys-resources/caution_3.0-zh-cn.png)
因发现插件存在缺陷，现暂时关闭支持，我们会在缺陷修复后重新开放，给您造成不便敬请谅解。
#### 约束条件
仅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*        | 报告内容保存的文件名，支持指定相对路径或绝对路径。 |
      
   ![](https://support.huaweicloud.com/usermanual-rds-pg/public_sys-resources/note_3.0-zh-cn.png)
   其中*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*          | 报告内容保存的文件名，支持指定相对路径或绝对路径。 |
      
   ![](https://support.huaweicloud.com/usermanual-rds-pg/public_sys-resources/note_3.0-zh-cn.png)
   目前相关参数保持默认值，详情如下：
   - 采样周期（单位：分钟）：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：否。   | 插件生成的报告依赖于样本，关闭了采样那么就无法生成最新的报告，但是可以查看历史采样的报告。 |
   
![](https://support.huaweicloud.com/usermanual-rds-pg/public_sys-resources/note_3.0-zh-cn.png)
表格中参数默认值为最新RDS版本的默认值，其他版本可能会有不同。
#### 报告示例
报告由三部分组成，包含标题、目录和报表。
- 标题 报告标题包含以下内容：报告起止样本ID、pg_profile_pro内核版本、服务名称、报告起止时间。
  图1报告标题   
  ![](https://support.huaweicloud.com/usermanual-rds-pg/zh-cn_image_0000002248941801.png "点击放大") 
- 目录 每层目录分别链接一个报表，用户可以通过目录总览报告中所有报表，也可通过单击链接查看报表内容。
  如下图所示：
  ![](https://support.huaweicloud.com/usermanual-rds-pg/zh-cn_image_0000002213821860.png "点击放大")
  
- 报表 报告呈现丰富的报表，从不同的维度、关注点来展现数据库的性能情况。
  - 在每个报表后方会针对该报表关注点的提出建议。
    图2报表及建议   
    ![](https://support.huaweicloud.com/usermanual-rds-pg/zh-cn_image_0000002213662056.png "点击放大") 
  
  - 在报表中，将鼠标悬停在列标题上，可以看到对列标题的注解（中英文）。
    图3列标题注解   
    ![](https://support.huaweicloud.com/usermanual-rds-pg/zh-cn_image_0000002248781897.png "点击放大") 
   
 
