WDR Snapshot生成性能报告

基于WDR Snapshot数据表汇总、统计,生成性能报告。

前提条件

WDR Snasphot启动(即参数enable_wdr_snapshot为on时),且快照数量大于等于2。

操作步骤

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

    1. gsql -d postgres -p 端口号 -r
  2. 执行如下命令查询已经生成的快照,以获取快照的snapshot_id。

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

    1. select create_wdr_snapshot();

    WDR Snapshot 生成性能报告 - 图1 说明: 执行“cm_ctl query -Cdvi”,回显中“Central Coordinator State”下显示的信息即为CCN信息。

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

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

    1. ```
    2. \a \t \o 服务器文件路径
    3. ```
    4. 上述命令涉及参数说明如下:
    5. - \\a:切换非对齐模式。
    6. - \\t:切换输出的字段名的信息和行计数脚注。
    7. - \\o:把所有的查询结果发送至服务器文件里。
    8. - 服务器文件路径:生成性能报告文件存放路径。用户需要拥有此路径的读写权限。

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

    1. ```
    2. select generate_wdr_report(begin_snap_id bigint, end_snap_id bigint, report_type cstring, report_scope cstring, node_name cstring);
    3. ```
    4. 命令中涉及的参数说明如下。
    5. **表 1** generate\_wdr\_report函数参数说明
    6. <a name='zh-cn_topic_0283137259_table5333144711537'></a>
    7. <table><thead align="left"><tr id="zh-cn_topic_0283137259_row040934711539"><th class="cellrowborder" valign="top" width="34.01010101010101%" id="mcps1.2.4.1.1"><p id="zh-cn_topic_0283137259_p2409447155310"><a name='zh-cn_topic_0283137259_p2409447155310'></a><a name='zh-cn_topic_0283137259_p2409447155310'></a>参数</p>
    8. </th>
    9. <th class="cellrowborder" valign="top" width="32.56565656565657%" id="mcps1.2.4.1.2"><p id="zh-cn_topic_0283137259_p10409154795317"><a name='zh-cn_topic_0283137259_p10409154795317'></a><a name='zh-cn_topic_0283137259_p10409154795317'></a>说明</p>
    10. </th>
    11. <th class="cellrowborder" valign="top" width="33.42424242424243%" id="mcps1.2.4.1.3"><p id="zh-cn_topic_0283137259_p940974711533"><a name='zh-cn_topic_0283137259_p940974711533'></a><a name='zh-cn_topic_0283137259_p940974711533'></a>取值范围</p>
    12. </th>
    13. </tr>
    14. </thead>
    15. <tbody><tr id="zh-cn_topic_0283137259_row540954735315"><td class="cellrowborder" valign="top" width="34.01010101010101%" headers="mcps1.2.4.1.1 "><p id="zh-cn_topic_0283137259_p3409194710533"><a name='zh-cn_topic_0283137259_p3409194710533'></a><a name='zh-cn_topic_0283137259_p3409194710533'></a>begin_snap_id</p>
    16. </td>
    17. <td class="cellrowborder" valign="top" width="32.56565656565657%" headers="mcps1.2.4.1.2 "><p id="zh-cn_topic_0283137259_p14093472535"><a name='zh-cn_topic_0283137259_p14093472535'></a><a name='zh-cn_topic_0283137259_p14093472535'></a>查询时间段开始的snapshotid(表snapshot.snaoshot中的snapshot_id)。</p>
    18. </td>
    19. <td class="cellrowborder" valign="top" width="33.42424242424243%" headers="mcps1.2.4.1.3 "><p id="zh-cn_topic_0283137259_p1740916478538"><a name='zh-cn_topic_0283137259_p1740916478538'></a><a name='zh-cn_topic_0283137259_p1740916478538'></a>-</p>
    20. </td>
    21. </tr>
    22. <tr id="zh-cn_topic_0283137259_row1640964715530"><td class="cellrowborder" valign="top" width="34.01010101010101%" headers="mcps1.2.4.1.1 "><p id="zh-cn_topic_0283137259_p11409947115314"><a name='zh-cn_topic_0283137259_p11409947115314'></a><a name='zh-cn_topic_0283137259_p11409947115314'></a>end_snap_id</p>
    23. </td>
    24. <td class="cellrowborder" valign="top" width="32.56565656565657%" headers="mcps1.2.4.1.2 "><p id="zh-cn_topic_0283137259_p17410114711536"><a name='zh-cn_topic_0283137259_p17410114711536'></a><a name='zh-cn_topic_0283137259_p17410114711536'></a>查询时间段结束snapshotid。默认end_snap_id大于begin_snap_id(表snapshot.snaoshot中的snapshot_id)。</p>
    25. </td>
    26. <td class="cellrowborder" valign="top" width="33.42424242424243%" headers="mcps1.2.4.1.3 "><p id="zh-cn_topic_0283137259_p541054716536"><a name='zh-cn_topic_0283137259_p541054716536'></a><a name='zh-cn_topic_0283137259_p541054716536'></a>-</p>
    27. </td>
    28. </tr>
    29. <tr id="zh-cn_topic_0283137259_row74101947205320"><td class="cellrowborder" valign="top" width="34.01010101010101%" headers="mcps1.2.4.1.1 "><p id="zh-cn_topic_0283137259_p174101447205314"><a name='zh-cn_topic_0283137259_p174101447205314'></a><a name='zh-cn_topic_0283137259_p174101447205314'></a>report_type</p>
    30. </td>
    31. <td class="cellrowborder" valign="top" width="32.56565656565657%" headers="mcps1.2.4.1.2 "><p id="zh-cn_topic_0283137259_p1410847175318"><a name='zh-cn_topic_0283137259_p1410847175318'></a><a name='zh-cn_topic_0283137259_p1410847175318'></a>指定生成report的类型。例如,summary/detail/all。</p>
    32. </td>
    33. <td class="cellrowborder" valign="top" width="33.42424242424243%" headers="mcps1.2.4.1.3 "><a name='zh-cn_topic_0283137259_ul27626140555'></a><a name='zh-cn_topic_0283137259_ul27626140555'></a><ul id="zh-cn_topic_0283137259_ul27626140555"><li>summary:汇总数据。</li><li>detail:明细数据。</li><li>all:包含summarydetail。</li></ul>
    34. </td>
    35. </tr>
    36. <tr id="zh-cn_topic_0283137259_row8410174755319"><td class="cellrowborder" valign="top" width="34.01010101010101%" headers="mcps1.2.4.1.1 "><p id="zh-cn_topic_0283137259_p8410947105319"><a name='zh-cn_topic_0283137259_p8410947105319'></a><a name='zh-cn_topic_0283137259_p8410947105319'></a>report_scope</p>
    37. </td>
    38. <td class="cellrowborder" valign="top" width="32.56565656565657%" headers="mcps1.2.4.1.2 "><p id="zh-cn_topic_0283137259_p44101747145316"><a name='zh-cn_topic_0283137259_p44101747145316'></a><a name='zh-cn_topic_0283137259_p44101747145316'></a>指定生成report的范围,可以为cluster或者node。</p>
    39. </td>
    40. <td class="cellrowborder" valign="top" width="33.42424242424243%" headers="mcps1.2.4.1.3 "><a name='zh-cn_topic_0283137259_ul1630372943913'></a><a name='zh-cn_topic_0283137259_ul1630372943913'></a><ul id="zh-cn_topic_0283137259_ul1630372943913"><li>cluster:数据库级别的信息。</li><li>node:节点级别的信息。</li></ul>
    41. </td>
    42. </tr>
    43. <tr id="zh-cn_topic_0283137259_row1841064716537"><td class="cellrowborder" valign="top" width="34.01010101010101%" headers="mcps1.2.4.1.1 "><p id="zh-cn_topic_0283137259_p11410194725316"><a name='zh-cn_topic_0283137259_p11410194725316'></a><a name='zh-cn_topic_0283137259_p11410194725316'></a>node_name</p>
    44. </td>
    45. <td class="cellrowborder" valign="top" width="32.56565656565657%" headers="mcps1.2.4.1.2 "><p id="zh-cn_topic_0283137259_p9831125295619"><a name='zh-cn_topic_0283137259_p9831125295619'></a><a name='zh-cn_topic_0283137259_p9831125295619'></a>在report_scope指定为node时,需要把该参数指定为对应节点的名称。(节点名称可以执行select * from pg_node_env;查询)。</p>
    46. <p id="zh-cn_topic_0283137259_p941074755313"><a name='zh-cn_topic_0283137259_p941074755313'></a><a name='zh-cn_topic_0283137259_p941074755313'></a>在report_scopecluster时,该值可以省略或者指定为空或NULL。</p>
    47. </td>
    48. <td class="cellrowborder" valign="top" width="33.42424242424243%" headers="mcps1.2.4.1.3 "><a name='zh-cn_topic_0283137259_ul481800164318'></a><a name='zh-cn_topic_0283137259_ul481800164318'></a><ul id="zh-cn_topic_0283137259_ul481800164318"><li>node:<span id="text1798254510538"><a name='text1798254510538'></a><a name='text1798254510538'></a>openGauss</span>中的节点名称。</li><li>cluster:省略/空/NULL。</li></ul>
    49. </td>
    50. </tr>
    51. </tbody>
    52. </table>

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

    1. ```
    2. \o \a \t
    3. ```
  5. 根据需要查看WDR报告内容。

    表 2 WDR报表主要内容

    项目

    描述

    Database Stat(数据库范围)

    数据库维度性能统计信息:事务,读写,行活动,写冲突,死锁等。

    Load Profile(数据库范围)

    数据库维度的性能统计信息:CPU时间、DB时间、逻辑读/物理读、IO性能、登入登出、负载强度和负载性能表现等。

    Instance Efficiency Percentages(数据库/节点范围)

    数据库级或者节点Buffer Hit(缓冲命中率)、Effective CPU(CPU使用率)、WalWrite NoWait(获取Wal Buffer成功率)、Soft Parse(软解析率)和Non-parse CPU(CPU非解析时间比例)。

    Top 10 Events by Total Wait Time(节点范围)

    最消耗时间的事件。

    Wait Classes by Total Wait Time(节点范围)

    最消耗时间的等待事件分类。

    Host CPU(节点范围)

    主机CPU消耗。

    Memory Statistics(节点范围)

    内核内存使用分布。

    Object stats(节点范围)

    表、索引维度的性能统计信息。

    Database Configuration(节点范围)

    节点配置。

    SQL Statistics(节点范围)

    SQL语句各个维度性能统计:端到端时间、行活动、缓存命中、CPU消耗和时间消耗细分。

    SQL Detail(节点范围)

    SQL语句文本详情。

示例

  1. --查询已经生成的快照。
  2. openGauss=# select * from snapshot.snapshot;
  3. snapshot_id | start_ts | end_ts
  4. -------------+-------------------------------+-------------------------------
  5. 1 | 2020-09-07 10:20:36.763244+08 | 2020-09-07 10:20:42.166511+08
  6. 2 | 2020-09-07 10:21:13.416352+08 | 2020-09-07 10:21:19.470911+08
  7. (2 rows)
  8. --生成格式化性能报告wdrTestNode.html
  9. openGauss=# \a \t \o /home/om/wdrTestNode.html
  10. Output format is unaligned.
  11. Showing only tuples.
  12. --向性能报告wdrTestNode.html中写入数据。
  13. openGauss=# select generate_wdr_report(1, 2, 'all', 'node', 'dn');
  14. --关闭性能报告wdrTestNode.html
  15. openGauss=# \o
  16. --生成格式化性能报告wdrTestCluster.html
  17. openGauss=# \o /home/om/wdrTestCluster.html
  18. --向格式化性能报告wdrTestCluster.html中写入数据。
  19. openGauss=# select generate_wdr_report(1, 2, 'all', 'cluster');
  20. --关闭性能报告wdrTestCluster.html
  21. openGauss=# \o \a \t
  22. Output format is aligned.
  23. Tuples only is off.