详解GaussDB(DWS)数据库智能监控运维服务如何定位SQL执行问题

GaussDB(DWS)智能运维体系介绍中,大致梳理了DMS作为DWS云原生的智能运维系统,整个体系设计和服务群体,本文将以DBA视角分析,当在使用DWS数仓服务遇到SQL执行问题,怎么利用DMS系统去定位问题。

1. 直接入口 - 集群概览

在集群概览页面中可以看到当前集群执行SQL中耗时和下盘量最大的top5的查询SQL,如果像获取更进一步的查询信息,可以通过【监控】-【查询监控】

2. 查询监控 - 实时查询

image.png

在实时查询页面,提供了一个当前查询执行的聚合数据,提供当前数据库中运行、阻塞、延迟、取消查询数,以及在快慢车道中的查询数。

聚合指标说明

聚合指标名称 指标说明 计算方式
运行 处于运行中查询的数量 state = ‘active’ state = ‘fastpath function call’ 为了保证数据一致性,这里还需要减掉阻塞和延迟的查询数量。
阻塞 处于阻塞中查询的数量 state = ‘active’ and waiting = ‘t’
取消 后端在事务中,但事务中有语句执行失败 state = ‘idle in transaction (aborted)’
延迟 查询正在排队等待执行 state = ‘active’ and enqueue is not NULL
快慢车道 处于快车道中的查询和处于慢车道中的查询数量 lane = ‘fast’ lane = ‘slow’

DBA可以在【查询监控】-【实时监控】页面中对当前系统的查一下以提交时间、阻塞时间、执行时间、CPU时间、CPU时间倾斜、平均下盘量这些维度进行排序,获取关注的这些维度的topN的数据。

实时查询显示项说明

指标名称 指标描述
查询ID 当前查询语句的QueryID,内核给每一个查询语句分配的唯一标识
用户名称 提交当前查询语句的用户名称
应用名称 当前查询语句所对应的应用名称
数据库名称 当前查询语句所对应的数据库名称
工作负载队列 承载当前查询语句的工作负载队列名称
提交时间 当前查询语句提交的时间戳
阻塞时间 当前查询语句执行前的等待时间,单位:ms
执行时间 当前查询语句到目前为止的执行时间,单位:ms
CPU时间 当前查询语句在所有DN上执行的CPU总时间,单位:ms
平均下盘量 当前查询语句在所有DN上的平均下盘量,单位:MB
查询语句 当前正在执行的查询语句
接入CN 提交当前查询语句的CN名称
客户端IP 提交当前查询语句的客户端IP地址
快慢车道 当前查询语句所在的车道
查询状态 当前正在执行查询的语句的查询状态
排队状态 当前查询在数据库中执行的状态,是否在工作负载队列上排队

查询监控还可以对具体的单个查询查看详细信息。

查询详情

image.png

指标名称 指标描述
基本信息 该查询的基本信息:用户名,数据库,开始时间,预估执行时间等等
调优警告 该语句触发的内核调优告警,没有的话返回空
实时资源消耗 展示SQL执行过程中,CPU,内存,I/O下盘量指标的变化趋势(该页面仅实时查询下钻显示)
历史资源消耗 展示SQL执行过程中,CPU,内存,I/O下盘量指标的变化趋势
查询语句 该查询所执行的SQL语句
查询计划 该查询的语句的查询计划

DMS还提供了历史查询,供DBA通过时间区间查看历史查询信息

历史查询

除了表格数据,DMS还提供了性能监控,可以提供对当前集群或者数据维度的TPS,查询数等指标提供趋势分析

性能监控


除了针对DBA提供可视化的页面呈现,DMS还提供了openAPI供开发人员对应自有监控系统。

openAPI (华为云未上线)

/v1/{project_id}/dms/clusters/{cluster_id}/query
{
  "queries": [
    {
      "query": "select  count(*) \r\nfrom store_sales\r\n    ,household_demographics \r\n    ,time_dim, store\r\nwhere ss_sold_time_sk = time_dim.t_time_sk   \r\n    and ss_hdemo_sk = household_demographics.hd_demo_sk \r\n    and ss_store_sk = s_store_sk\r\n    and time_dim.t_hour = 8\r\n    and time_dim.t_minute >= 30\r\n    and household_demographics.hd_dep_count = 5\r\n    and store.s_store_name = 'ese'\r\norder by count(*)\r\nlimit 100;",
      "max_cpu_time": 0,
      "min_cpu_time": 0,
      "total_cpu_time": 0,
      "cpu_skew": 0,
      "max_peak_mem": 11,
      "min_peak_mem": 11,
      "avg_peak_mem": 11,
      "mem_skew": 0,
      "max_spill_size": 0,
      "min_spill_size": 0,
      "avg_spill_size": 0,
      "spill_skew": 0,
      "max_peak_iops": 0,
      "min_peak_iops": 0,
      "avg_peak_iops": 0,
      "iops_skew": 0,
      "db_name": "test",
      "application": "gsql",
      "query_id": "79657418412457882"
    }
  ],
  "timestamp": 1616679496270,
  "cluster_id": "9c11a33a-64e6-40c1-93bd-01b2255b2228"
}

想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~

GaussDB(DWS)博文后缀.png

(完)