在GaussDB(DWS)智能运维体系介绍中,大致梳理了DMS作为DWS云原生的智能运维系统,整个体系设计和服务群体,本文将以DBA视角分析,当在使用DWS数仓服务遇到SQL执行问题,怎么利用DMS系统去定位问题。
1. 直接入口 - 集群概览
在集群概览页面中可以看到当前集群执行SQL中耗时和下盘量最大的top5的查询SQL,如果像获取更进一步的查询信息,可以通过【监控】-【查询监控】
2. 查询监控 - 实时查询
在实时查询页面,提供了一个当前查询执行的聚合数据,提供当前数据库中运行、阻塞、延迟、取消查询数,以及在快慢车道中的查询数。
聚合指标说明
聚合指标名称 | 指标说明 | 计算方式 |
---|---|---|
运行 | 处于运行中查询的数量 | 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地址 |
快慢车道 | 当前查询语句所在的车道 |
查询状态 | 当前正在执行查询的语句的查询状态 |
排队状态 | 当前查询在数据库中执行的状态,是否在工作负载队列上排队 |
查询监控还可以对具体的单个查询查看详细信息。
查询详情
指标名称 | 指标描述 |
---|---|
基本信息 | 该查询的基本信息:用户名,数据库,开始时间,预估执行时间等等 |
调优警告 | 该语句触发的内核调优告警,没有的话返回空 |
实时资源消耗 | 展示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级数仓黑科技,后台还可获取众多学习资料哦~