GaussDB-SQL采集

76 阅读6分钟

GaussDB-SQL采集

操作场景

SQL采集用于在数据库当前负载下,分析慢SQL执行时间过长的可能原因,并给出对应的诊断建议。

前提条件

数据库实例已被DBMind纳管。

注意事项
  • SQL采集的SQL最小执行时长的默认值,可以通过修改系统参数“log_min_duration_statement”进行配置。系统参数的修改方法请参考参数

  • 主备版实例只支持查询主DN节点,分布式实例只支持查询CN节点。对在剩余节点上执行的SQL暂不支持采集。

  • 主备切换、实例重启,会导致之前的慢SQL数据丢失。

  • 数据源为当前SQL数据、历史SQL数据、模板采集数据时,采集最多1000条SQL。

  • 在执行SQL诊断时,如果诊断结果为“INVALID SQL”。表示进行慢SQL分析的用户(dbmind_manager)权限不足,需要参考如下语句为分析用户赋权:

    1. 授权用户连接到指定数据库。

      grant connect on database **<数据库名> **to **<用户名> **;

    2. 授予用户对指定模式的使用权限。

      grant usage on schema <schema名> to **<用户名> **;

    3. 授予用户在指定模式下所有表的SELECT权限。

      grant select on all tables in schema **<schema名> **to **<用户名> **;

操作步骤
  1. 登录云数据库GaussDB管理平台

  2. 单击具体实例名称,进入“实例管理”详情页。

  3. 单击“诊断优化 > SQL诊断”,显示“SQL诊断”页面。

  4. 单击“SQL采集”页签,可进行SQL诊断。

    图1 SQL采集

    参数名称参数说明
    数据源(必填)可选择当前SQL数据、历史SQL数据、模板采集数据以及全量SQL数据。其中全量SQL数据只有在全量SQL开关开启之后才会展示。
    节点选择(选填)在主备版实例中,默认节点是主DN,分布式实例中,提供给用户选择CN节点。
    数据库名(选填)下来选择待采集的数据库。
    最小执行时长(选填)- 数据源选择当前SQL数据时,最小执行时长是指当前SQL已执行的时间;
    • 数据源选择为历史SQL数据时,最小执行时长是指历史SQL执行的时长,值可通过参数管理页配置log_min_duration_statement参数,默认为3000毫秒。 | | 用户名(选填) | 用户可通过下拉框选择用户名。以下用户名平台会进行过滤,下拉框中不主动显示,用户可自行输入用户名筛选。- rdsAdmin
    • rdsBackup
    • rdsMetric
    • rdsRepl |
  5. 填写完成后,单击“开始采集”。

  6. 单击SQL列表中的“操作 > 诊断”,查看诊断结果。

    • 模板计划:SQL可能实施的执行计划。
    • 根因:慢SQL根因。
    • 建议:对根因的建议。

SQL全链路

操作场景

支持通过业务SQL的唯一SQL ID、事务ID、链路ID进行SQL执行链路信息查询。

前提条件

  • 数据库实例已被DBMind纳管。
  • 登录账号需要具备授权项“gaussdb:instance:listSqlLink”。

约束限制

  • 事务ID为0时不支持使用事务ID查询链路信息。
  • 链路ID为空时不支持使用链路ID查询链路信息。
  • 唯一SQL ID为0时不支持使用唯一SQL ID查询链路信息。

操作步骤

  1. 登录云数据库GaussDB管理平台(TPOPS)

  2. 单击具体实例名称,进入“实例管理”详情页。

  3. ****选择“诊断优化 > SQL诊断”,选择“SQL采集”,数据源为全量SQL数据。根据条件查询全量SQL列表。

  4. 跳转至SQL全链路。

    • 可以单击唯一SQL ID(唯一SQL ID不为0)跳转至全链路页面,展示该条SQL的执行链路信息。
    • 可以单击事务ID(事务ID不为0)跳转至全链路页面,展示该事务的执行链路信息。
    • 可以单击链路ID(链路ID不为空)跳转至全链路页面,展示数据库驱动使用该链路ID执行的所有SQL的执行链路信息。

    图2 SQL全链路信息

    表1 SQL全链路参数说明

    模块参数名称参数解释
    资源耗时信息CPU耗时CPU上花费的时间。
    IO耗时IO上花费的时间。
    其余耗时有效的DB时间减去CPU耗时、IO耗时。
    内核执行模块耗时信息SQL解析耗时解析SQL语句花费的时间。
    SQL重写耗时重写SQL语句花费的时间。
    SQL生成计划耗时生成SQL执行计划花费的时间。
    执行器内执行耗时执行SQL语句花费的时间。
    其余耗时有效的DB时间减去SQL解析耗时、SQL重写耗时、SQL生成计划耗时、执行器内执行耗时。
    等待事件代码耗时信息耗时TOP5事件列表耗时最多的事件耗时信息列表。
    其余事件耗时所有事件耗时减去TOP5事件耗时。
    事件外耗时有效的DB时间减去所有等待事件代码耗时。
    资源类等待事件耗时-IO耗时信息耗时TOP5事件列表耗时最多的IO事件列表。
    其余事件耗时所有IO事件耗时减去TOP5 IO事件耗时。
    事件外耗时有效的DB时间减去所有IO等待事件耗时。
    资源类等待事件耗时-加锁耗时信息耗时TOP5事件列表耗时最多的加锁事件列表。
    其余事件耗时所有加锁事件耗时减去TOP5加锁事件耗时。
    事件外耗时有效的DB时间减去所有加锁事件耗时。
    资源类等待事件耗时-轻量级加锁耗时信息耗时TOP5事件列表耗时最多的轻量级加锁事件列表。
    其余事件耗时所有轻量级加锁事件耗时减去TOP5轻量级加锁事件耗时。
    事件外耗时有效的DB时间减去所有轻量级加锁事件耗时。
  5. 单击具体节点显示SQL在该节点上执行的详细信息弹窗。

    图3 SQL在节点上执行详细信息弹窗

    表2 弹窗部分参数说明

    参数名称参数解释
    DB Time有效的DB时间花费,多线程将累加(单位:微秒)。db_time和开始时间/结束时间统计是两套机制,不完全符合;但差异非常小,不影响性能问题分析。

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…