GaussDB(DWS)运维利刃:TopSQL工具解析
本文分享自华为云社区《GaussDB(DWS)运维利刃:TopSQL工具解析》,作者:胡辣汤。
在生产环境中,难免会面临查询语句出现异常中断、阻塞时间长等突发问题,如果没能及时记录信息,事后就需要投入更多的人力及时间成本进行问题的定位和解决,有时还无法定位到错误出现的地方。在本期《GaussDB(DWS)运维利刃:TopSQL工具解析》的主题直播中,华为云数仓GaussDB(DWS)调优专家刘坤鹏老师,深入讲解GaussDB(DWS) TopSQL的基本原理、能力及典型应用场景。
一、 什么是TopSQL?
TopSQL是GaussDB(DWS)数据库中内置的一款功能十分强大的性能分析工具。在生产环境中,难免会出现一些突发情况,导致查询语句出现异常中断、阻塞时间长等情况,如果当时没能记录下来,那么事后就要投入更多的人力以及时间成本去对错误进行定位和解决,有时还往往定位不到错误出现的地方。为了解决这样的窘迫的情况,GaussDB(DWS)开发了TopSQL功能,对运行中的语句记录(实时TopSQL),对运行完成的语句进行记录(历史TopSQL)。
TopSQL作为GaussDB(DWS)的性能诊断工具,记录GaussDB(DWS)中各个作业、算子级别的资源使用数据、耗时数据,包括下盘信息、内存、网络、耗时、自诊断告警、基础信息等作业执行的数据。

TopSQL工作原理
二、TopSQL系统表和参数介绍
以GaussDB(DWS) 8.1.3版本为例,推荐TopSQL相关的一些参数。
|
参数 |
解释及用法 |
|
enable_resource_track:on |
资源监控总开关,开启后TopSQL才能发挥作用。 |
|
enable_resource_record:on |
控制实时TopSQL是否做历史TopSQL转储,813版本推荐打开,方便对历史问题做定位分析。 |
|
resource_track_cost:0 |
执行代价超过预值,才会被记录,建议保持默认值0。 |
|
resource_track_duration:1 |
实时TopSQL是否转储到历史TopSQL,默认值为60秒,建议设置为1。 |
|
resource_track_level:query/perf |
语句级TopSQL信息记录到历史TopSQL的系统表中。 |
|
TopSQL_retention_time:30 |
TopSQL老化时间为30秒,建议保持默认值。 |
|
enable_track_record_subsql:按需开启 |
控制子查询是否记录到TopSQL系统表中。 |
TopSQL常用系统表:
• 实时TopSQL:pgxc_wlm_session_statistics
• 历史TopSQL:pgxc_wlm_session_info
TopSQL系统表关键字段:
|
字段 |
字段说明 |
|
username |
用户名 |
|
block_time |
排队时间,辅助定位CCN场景 |
|
Start_time |
语句执行的开始时间 |
|
duration |
语句执行时长,重点关注 |
|
Estimate_memory |
估算内存,复制定位ccn排队或内存问题 |
|
Max_peak_memory |
实际最大使用内存,定位内存不足场景 |
|
Max_spill_size |
下盘大小 |
|
Unique_sql_id |
归一化ID,标志同一语句/同一语句不同入参 |
|
Cpu_skew_percent |
CPU倾斜情况 |
|
warning |
自诊断信息 |
三、TopSQL的3个典型应用场景
1、 实时TopSQL
问题场景:某集群业务反馈某业务SQL偶发执行慢,该集群resource_track_duration设置较大,历史TopSQL中没有记录计划详情,需要定位原因。
处理过程:
1) 系统管理员根据queryid查看等待视图,等待视图部分结果如下:

2)管理员执行explain verbose,得到的执行计划如下

3) 第8层非Stream算子,说明该计划不是正在执行语句的计划,使用实时TopSQL查看实际计划:

2、 历史TopSQL
问题场景:某客户由于内存规格较小,经常出现内存不可用的报错,云上运维人员通过autopilot定期巡检时发现该集群内存周期性冲高,且存在单实例内存使用倾斜的问题,需定位原因。

处理过程:
1) 通过历史TopSQL找到内存占用高的语句
Select * from pgxc_wlm_session_info where start_time > '2023-10-30 10:05' and start_time < '2023-10-30 10:10' order by max_peak_memory desc limit 100;
2) 根据unique_sql_id确认作业的历史执行情况
3、 存储过程子语句
问题场景:某客户在业务中封装了大量的存储过程和匿名块脚本,用于业务系统的调度,随着业务数据越来越多,存储过程和匿名块脚本执行越来越慢,需要对其中的脚本进行优化。示例脚本如下:

处理过程:
1) 查看历史TopSQL,存储过程和匿名块的query_plan字段显示NoPlan;
2) 设置enable_track_record_subsql: on,该参数打开后可以记录存储过程和匿名块中的自语句和执行计划;
3) 重新执行慢的存储过程,根据query_id查看历史TopSQL中各个自语句的执行计划。
四、如何通过TopSQL进行信息统计
1、 常用TopSQL进行业务信息统计
1) 识别stream数量多的语句:select *,(length(query_plan) - length(replace(query_plan, 'Streaming', ''))) / length('Streaming') as stream_count FROM pgxc_wlm_session_info ORDER BY stream_count DESC limit 100;
2) 识别内存占用高的语句:select * from pgxc_wlm_session_info where start_time > 'xxxx-xx-xx' and start_time < 'xxxx-xx-xx' order by max_peak_memory desc limit 100;
3) 识别需要优化的语句:select * from pgxc_wlm_session_info where start_time > 'xxxx-xx-xx' and start_time < 'xxxx-xx-xx' and warning is not null order by duration desc limit 100。
2、 TopSQL使用注意事项
1) 查询时使用start_time做条件,避免全表查询;
2) 查询时使用limit对结果集大小限制,防止结果集过大导致客户端OOM。
本期分享到此结束,更多关于GaussDB(DWS)产品技术解析、数仓产品新特性的介绍,请关注GaussDB(DWS)开发者平台,GaussDB(DWS)开发者平台为开发者们提供最新、最全的信息咨询,包括精品技术文章、最佳实践、直播集锦、热门活动、海量案例、智能机器人。让您学+练+玩一站式体验GaussDB(DWS)。
GaussDB(DWS)开发者平台链接:https://bbs.huaweicloud.com/contents/dws/learning.html
GaussDB(DWS)运维利刃:TopSQL工具解析的更多相关文章
- GaussDB(DWS)运维:导致SQL执行不下推的改写方案
摘要:本文就针对因USING子句的书写方式可能导致MERGE INTO语句的执行不下推的场景,对USING子句的SQL语句进行改写一遍,整个SQL语句可以下推. 本文分享自华为云社区<Gauss ...
- Ansible 运维自动化 ( 配置管理工具 )
背景 出差背景,要搞项目的自动化部署.因为只直接对接生产分发,机器又非常多,这样以往使用的bat只能作为应急方案了,还是得考虑使用专业化的工具来做这个事情! 当下有许多的运维自动化工具( 配置管理 ) ...
- MySQL运维之--xtrabackup工具的原理和使用方法
Xtrabackup工具的介绍 xtrabackup是percona公司开发的一款自由.免费.开源的一款备份工具,他的备份特点就是:支持热备.备份速度快. xtrabackup包含两个重要的工具:in ...
- 运维自动化轻量级工具pssh
1pssh介绍 pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程 ...
- 日常运维--rsync同步工具
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而 ...
- 运维数据同步工具:rsync,serync,csync,drbd,info(基于文件系统)
Rsync官方站点:http://rsync.samba.org 1. Rsync rsync是一款开源的实现数据全量与增量同步备份的工具 生产环境中使用的场景: 1:一般用于数据异地备份 2:用于 ...
- 【数仓运维实践】关于GaussDB(DWS)单SQL磁盘空间管控
摘要:本文主要讲解数仓运维中遇到单SQL磁盘空间管控问题的解析和方案. 本文分享自华为云社区<GaussDB(DWS)运维 -- 单SQL磁盘空间管控>,作者: 譡里个檔. [问题描述] ...
- 企业级LINUX自动化运维工具Ansible实战课程下载
什么是Ansible? Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量 ...
- 用自动化运维工具解放IT运维
何谓自动化运维,即在最少的人工干预下,结合运用脚本与第三方工具,保证业务系统7*24小时高效稳定运行.这应该是所有业务系统运维终极目标. 我们对运维的要求通常是: 1.事前预警 在故障出现之前,管理人 ...
- 自动化运维工具——ansible安装入门(一)
一.简介 现如今有很多运维自动化的工具,如:Ansible.Puppet.saltStack.Fabric.chef.Cfengine 1. Ansible介绍 Ansible 是由 Cobbler与 ...
随机推荐
- 开源即时通讯(IM)项目OpenIM源码部署流程
由于 OpenIM 依赖的组件较多,开发者需求不一,导致 OpenIM 部署一直被人诟病,经过几次迭代优化,包括依赖的组件 compose 的一键部署,环境变量设置一次,全局生效,以及脚本重构,目前 ...
- 爆了!Sealos 三天支持 1000 个帕鲁私服
Sealos 的帕鲁私服模板从第一天发布之后就起了 100 多个私服,第二天直接上到 500 多个,第三天直接上千,还在加速增长中.来讲讲我们只用一个晚上怎么做到上线一个专属可用区的,还有一些帕鲁实践 ...
- 分享四个实用的vue自定义指令
v-drag 需求:鼠标拖动元素 思路: 元素偏移量 = 鼠标滑动后的坐标 - 鼠标初始点击元素时的坐标 + 初始点击时元素距离可视区域的top.left 将可视区域作为边界,限制在可视区域里面拖拽 ...
- vue2-ace-editor代码编辑器使用
安装 npm安装 npm install --save-dev vue2-ace-editor 如果需要拷贝到内网,需要 npm安装后 将 vue2-ace-editor 和 brace( vue2- ...
- 谁更适合搭配甜点显卡?i7-13700KF、锐龙7 7800X3D对比:游戏相当 生产力Intel强了50%
一.前言:如果搭配2000元甜点显卡 i7-13700KF和锐龙7 7800X3D谁更有性价比? 现在AMD最受欢迎的处理器无疑是拥有96MB三级缓存的锐龙7 7800X3D,这是一颗专为游戏而生的处 ...
- ProTab(高级表格)的使用
一. params 和 request 属性的使用 例子如下: import React, { useState } from 'react'; import { ProTable } from '@ ...
- 戴尔R7920工作站利用PVE开启vGPU,实现工作站虚拟化(ShareStation)
介绍 本文介绍了使用Proxmox VE(PVE) + DoraCloud,将一台Dell R7920图形工作站(配置有NVIDIA RTX A6000显卡)实现工作站虚拟化.可以满足多个设计用户同时 ...
- Oracle配置DCD避免会话被防火墙强制断开
今天有客户反馈应用测试连接Oracle数据库的会话半小时左右未做操作就会被中断,报错ORA-3113,询问数据库是否有这样的超时设置,能否取消掉这个限制? 登上环境查看监听日志发现连接的IP和数据库I ...
- google recaptcha 谷歌人机身份验证超详细使用教程,前端/后端集成说明
壹 ❀ 引 在日常页面交互中,验证码使用是极为频繁的,登录注册验证,非机器人操作验证等等,它遍布于每一个网站.说到验证码实现,Goole Recaptcha是一个非常不错的选择,那么希望通过本文的使用 ...
- NC17890 方格填色
题目链接 题目 题目描述 给一个m x n的方格,Applese想要给方格填上颜色,每个格子可以是黑色或者白色.他要求左右相邻两格不能同为白色且相邻两列不能全为黑色. 求满足条件的方案数. 输入描述 ...