GaussDB(DWS) TopSQL配置&使用指导
【摘要】 TopSQL是指GaussDB(DWS)数据库中内置的一款功能十分强大的监控工具,其对外的接口主要包含历史TopSQL视图和实时TopSQL视图,具体的说明参考链接中官方文档,本文重点讲解如何在实际场景配置和使用TopSQL,方便大家快速实操运用。
前言
TopSQL是指GaussDB(DWS)数据库中内置的一款功能十分强大的监控工具,其对外的接口主要包含历史TopSQL视图和实时TopSQL视图,具体的说明参考链接中官方文档,本文重点讲解如何在实际场景配置和使用TopSQL,方便大家快速实操运用。
参数配置
一般情况建议在GaussDB(DWS)内核版本8.1.3之后才放开使用TopSQL监控功能,因其内部记录大量资源类信息,且实现依赖于资源管控逻辑,因此配置开关多以resource命名,主要参数和配置建议如下:
相关参数 | 参数说明 | 默认值 / 建议值 | 配置重点关注 |
use_workload_manager | 资源管理总开关 | ON / ON | CHECK即可 |
enable_resource_track | 实时监控开关 | ON / ON | CHECK即可 |
enable_resource_record | 历史归档开关 | ON / ON | CHECK即可 |
resource_track_duration | 监控阈值,SQL超过阈值才记录,单位秒 | 60 / 0 | CPU和存储资源充足的场景建议设置为0,可记录更全的业务;在QPS高于100场景,可酌情调大,如1-10s |
resource_track_cost | 监控阈值,SQL超过阈值才记录,单位1 | 10000 / 0 | CPU和存储资源充足的场景建议设置为0,可记录更全的业务;在QPS高于100场景,可酌情调大,大于0时,DDL不会被记录 |
resource_track_level | 监控的粒度 | query / perf | perf级记录更详细执行信息,较query级性能损耗5%以内 |
enable_track_record_subsql | 存储过程子语句监控 | OFF / ON | 核心业务包含存储过程的场景建议开启 |
topsql_retention_time | 监控归档数据的保存时间,单位天。 | 30 / 30 | CHECK即可 |
session_history_memory | 转存历史视图前记录信息所处内存大小 | 100MB/参考配置关注点 |
根据单位时间内产生的topsql记录量灵活调整,在高并发场景下topsql记录在内存的记录来不及转储,会报TopSQL lfq is full, failed to save的warning,这个时候则需考虑调大该参数值 |
使用场景
说起TopSQL使用,其场景非常之广,几篇文章也没法说尽,本文基于TopSQL视图的主要字段,引申出各类使用场景。因历史TopSQL视图和实时TopSQL视图大多数字段都类似,这里合二为一介绍
名称 | 类型 | 描述 | 作用&使用场景 |
dbname | name | 连接后端的数据库名称。 | 业务SQL的来源信息,常用于 1)异常SQL溯源 2)辅助异常查杀(nodename) |
nodename | text | 语句执行的CN节点名称。 | |
username | name | 连接到后端的用户名。 | |
application_name | text | 连接到后端的应用名。 | |
client_addr | inet | 连接到后端的客户端的IP地址 | |
status(历史视图独有) | text | 语句执行结束状态:finished/aborted | 业务SQL执行的最终状态信息,常用于分析异常报错的业务 |
abort_info(历史视图独有) | text | 语句执行结束状态为aborted时显示异常信息。 | |
block_time | bigint | 语句执行前的阻塞时间,单位ms。 | 业务SQL执行的时间信息,常用于 1)追踪业务SQL的执行时间线 2)分析业务的排队时间(block_time) |
start_time | timestamp with time zone | 语句执行的开始时间。 | |
finish_time(历史视图独有) | timestamp with time zone | 语句执行的结束时间。 | |
duration | bigint | 语句已经执行的时间,单位ms。 | |
enqueue(实时视图独有) | text | 工作负载管理资源状态。 | 业务SQL所在资源池信息,常用于 1)确认SQL能使用的资源信息 2)确认SQL的CCN排队、资源池排队原因 |
resource_pool | name | 用户使用的资源池。 | |
control_group | text | 语句所使用的Cgroup。 | |
lane(历史视图独有) | text | 语句执行时所在的快慢车道 | |
estimate_memory | integer | 语句预估使用内存,单位MB。 | 业务的资源消耗,常用于 1)查看业务SQL实际使用内存&估算内存信息,用于分析CCN排队问题(estimate_memory/max_peak_memory) 2)查看SQL下盘情况,用于分析慢SQL、下盘触发的空间风险等 3)查看SQL的CPU消耗,用于分析CPU高场景,消耗CPU高的业务 4)分析资源计算&存储倾斜情况(min/max) |
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上的下盘信息: | |
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 | integer | 语句在各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时间倾斜率。 | |
warning | text | 1. Spill file size large than 256MB | 业务SQL的自诊断信息,常用于确认最明显的烂SQL信息,如: 1)语句下盘 2)不下推 3)大表broadcast |
pid | bigint | 后端线程ID。 | 业务SQL在DWS服务侧运行的标识信息,常用于 1)与其他视图联动分析(queryid) 2)辅助查杀、查找线程(PID) 3)抓取相同业务在不同时间表现(unique_sql_id) |
queryid | bigint | 语句执行使用的内部query id。 | |
unique_sql_id(历史视图独有) | bigint | 归一化的Unique SQL ID | |
query | text | 正在执行的语句。 | 业务SQL的语句和计划信息,常用于 |
query_plan | text | 语句的执行计划。 |
结语
不论是处理业务触发的实时的、历史的性能问题、过载问题,还是做主动的业务检查和优化,均可借助TopSQL进行便捷的处理;后续有需要作者会针对TopSQL的实际使用场景补充详细案例。在此再次大力推荐GaussDB(DWS)用户们快速用起来,效果谁用谁知道。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)