GaussDB(DWS) TopSQL配置&使用指导

举报
along_2020 发表于 2023/09/23 16:51:34 2023/09/23
【摘要】 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的语句和计划信息,常用于
1)抓取业务SQL的完整语句,尤其是超长、带参数的SQL
2)分析相同SQL在不同时刻执行效率差异大(偶发慢)问题(query_plan)
3)通过SQL执行计划优化业务SQL

query_plan text 语句的执行计划。

结语

不论是处理业务触发的实时的、历史的性能问题、过载问题,还是做主动的业务检查和优化,均可借助TopSQL进行便捷的处理;后续有需要作者会针对TopSQL的实际使用场景补充详细案例。在此再次大力推荐GaussDB(DWS)用户们快速用起来,效果谁用谁知道。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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