GaussDB(DWS) 资源管理 TopSQL 简析

举报
Convert 发表于 2021/04/02 12:05:22 2021/04/02
【摘要】 TopSQL简析,TopSQL视图,TopSQL流程

1. TopSQL 简介

TopSQL 是记录SQL执行过程中,资源使用的详细信息。分为实时的TopSQL、历史TopSQL。详细信息如下表

名称 类型 描述
datid oid 连接后端的数据OID。
dbname name 连接后端的数据库名称。
schemaname text 模式的名字。
nodename text 语句执行的CN节点名称。
username name 连接到后端的用户名。
application_name text 连接到后端的应用名。
client_addr inet
连接到后端的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。
client_hostname text
客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。
client_port integer
客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。
query_band text
用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。
pid bigint 后端线程ID。
block_time bigint 语句执行前的阻塞时间,单位ms。
start_time timestamp with time zone 语句执行的开始时间。
duration bigint 语句已经执行的时间,单位ms。
estimate_total_time bigint 语句执行预估总时间,单位ms。
estimate_left_time bigint 语句执行预估剩余时间,单位ms。
enqueue text 工作负载管理资源状态。
resource_pool name 用户使用的资源池。
control_group text 语句所使用的Cgroup。
estimate_memory integer 语句预估使用内存,单位MB。该字段只有当GUC参数enable_dynamic_workload为on时才有效。
min_peak_memory integer 语句在所有DN上的最小内存峰值,单位MB。
max_peak_memory integer 语句在所有DN上的最大内存峰值,单位MB。
average_peak_memory integer 语句执行过程中的内存使用平均值,单位MB。
memory_skew_percent integer 语句在各DN间的内存使用倾斜率。
spill_info text
语句在所有DN上的下盘信息:
None:所有DN均未下盘。
All: 所有DN均下盘。
min_spill_size integer 若发生下盘,所有DN上下盘的最小数据量,单位MB,默认为0。
max_spill_size integer 若发生下盘,所有DN上下盘的最大数据量,单位MB,默认为0。
average_spill_size integer 若发生下盘,所有DN上下盘的平均数据量,单位MB,默认为0。
spill_skew_percent integer 若发生下盘,DN间下盘倾斜率。
min_dn_time bigint 语句在所有DN上的最小执行时间,单位ms。
max_dn_time bigint 语句在所有DN上的最大执行时间,单位ms。
average_dn_time bigint 语句在所有DN上的平均执行时间,单位ms。
dntime_skew_percent bigint 语句在各DN间的执行时间倾斜率。
min_cpu_time bigint 语句在所有DN上的最小CPU时间,单位ms。
max_cpu_time bigint 语句在所有DN上的最大CPU时间,单位ms。
total_cpu_time bigint 语句在所有DN上的CPU总时间,单位ms。
cpu_skew_percent integer 语句在各DN间的CPU时间倾斜率。
min_peak_iops integer 语句在所有DN上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。
max_peak_iops integer 语句在所有DN上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。
average_peak_iops integer 语句在所有DN上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。
iops_skew_percent integer 语句在DN间的IO倾斜率。
warning text
主要显示如下几类告警信息以及SQL自诊断调优相关告警:
1. Spill file size large than 256MB
2. Broadcast size large than 100MB
3. Early spill
4. Spill times is greater than 3
5. Spill on memory adaptive
6. Hash table conflict
queryid bigint 语句执行使用的内部query id。
query text 正在执行的语句。
query_plan text 语句的执行计划。
node_group text 语句所属用户对应的逻辑集群。

2. 实时TopSQL

系统提供了query级别和算子级别的资源监控实时视图用来查询实时TopSQL。资源监控实时视图记录了查询作业运行时的资源使用情况(包括内存、下盘、CPU时间、IO等)以及性能告警信息。
实时视图具体的对外接口如下表所示:

视图级别 节点范围 查询视图
Query级别 当前CN gs_wlm_session_statistics
所有CN pgxc_wlm_session_statistics
算子级别 当前CN gs_wlm_operator_statistics
所有CN pgxc_wlm_operator_statistics

2.1 开启条件

● GUC参数use_workload_manager为on (默认为on)。
● GUC参数enable_resource_track为on (默认为on)。
● GUC参数resource_track_level为query或operator(默认为query)。
● 监控作业类型为:

    – 优化器估算的执行代价大于或等于resource_track_cost的取值的作业。
    – 增删改查,包括使用explain analyze和explain performance来执行的场景。
    query级别视图还额外支持create table as语法。
    – 重分布过程中的作业不统计。

● Cgroups功能正常加载,可通过gs_cgroup -P查看控制组信息。
在上述条件中,

use_workload_manager为系统级参数,是否开启资源管理功能。
enable_resource_track为系统级参数,用于设置是否开启资源监控功能。
resource_track_level为session级参数,可以对某个session的资源监控级别进行
灵活设置。这两个参数的设置方法如下表:
enable_resource_track resource_track_level query级别信息 算子级别信息
on(default) none 不统计 不统计
on(default) query(default) 统计 不统计
on(default) operator 统计 统计
off none/query/operator 不统计 不统计

2.2 视图大小控制

由GUC参数session_statistics_memory控制。

参数说明:设置实时查询视图的内存大小。
参数类型:SIGHUP
取值范围:整型,5MB ~ max_process_memory的50%。
默认值:5MB

3. 历史TopSQL

系统提供了query级别和算子级别的资源监控历史视图用例查询历史TopSQL。资源监控历史视图记录了查询作业运行结束时的资源使用情况(包括内存、下盘、CPU时间、IO等)和运行状态信息(包括报错、终止、异常等)以及性能告警信息。但对于由于FATAL、PANIC错误导致查询异常结束时,状态信息列只显示aborted,无法记录详细异常信息。特别的,对于查询解析,优化阶段的状态信息则无法监控。
历史视图具体的对外接口如下表所示:

视图级别 节点范围 查询视图
Query级别 当前CN 历史(Database Manager接口) gs_wlm_session_history
历史(内部转储接口) gs_wlm_session_info
所有CN 历史(Database Manager接口) pgxc_wlm_session_history
历史(内部转储接口) pgxc_wlm_session_info
算子级别 当前CN 历史(Database Manager接口) gs_wlm_operator_history
历史(内部转储接口) gs_wlm_operator_info
所有CN 历史(Database Manager接口) pgxc_wlm_operator_history
历史(内部转储接口) pgxc_wlm_operator_info

3.1 开启条件

● GUC参数use_workload_manager为on (默认为on)。
● GUC参数enable_resource_track为on (默认为on)。
● GUC参数resource_track_level为query或operator(默认为query)。
● GUC参数enable_resource_record为on(默认为off)。
● GUC参数resource_track_duration小于作业执行时间(默认为60s)。
● 监控作业类型为:

    – 资源监控实时视图中记录的作业结束时的执行时间大于或等于resource_track_duration的作业。
    – 优化器估算的执行代价大于或等于resource_track_cost的取值的作业。

● Cgroups功能正常加载,可通过gs_cgroup -P查看控制组信息。
● 该功能会引起存储空间膨胀及轻微性能影响,不建议生成系统默认使用。

3.2 视图大小控制

由GUC参数session_history_memory控制。

参数说明:设置历史查询视图的内存大小。
参数类型:SIGHUP
取值范围:整型,10MB ~ max_process_memory的50%。
默认值:10MB

4. 简要流程

流程图

博文后缀

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。