掌握把“烂”SQL牢牢关进笼子里的密钥
摘要:本文通过5个部分内容帮助开发者快速了解GaussDB(DWS) 资源管理机制,让数仓过载烦恼不再,把“烂”SQL牢牢关进笼子里。
本文分享自华为云社区《直播回顾 | 掌握把“烂”SQL牢牢关进笼子里的密钥》,作者: 华为云社区精选 。
混合负载场景下,怎样避免“烂”语句对数据库系统的冲击?如何在资源紧张的情况下,让高优先级的作业先行?本期《数仓过载不用愁,资源管理帮分忧》的主题直播中,我们邀请到华为云EI DTSE技术布道师周孟韬,针对GaussDB(DWS)资源管理机制与开发者和伙伴朋友们展开交流互动。通过5部分内容帮助开发者快速了解GaussDB(DWS) 资源管理机制,让数仓过载烦恼不再,把“烂”SQL牢牢关进笼子里。
资源池的并发管控介绍
基于华为云基础设施架构,GaussDB(DWS)提供标准数仓、实时数仓、IoT数仓3种形态,满足不同的业务诉求。在GaussDB(DWS)整体架构中,有4类资源管控,分别是:并发管控、算力管控、存储空间、资源池。
当前GaussDB(DWS)的并发支持三种管控模式:
1.global并发管控:
通过max_active_statements参数,约束当前集群支持的query并发上限;
2.Simple语句并发数
某个资源池内,简单语句的并发数上限;
3.复杂作业并发数
某个资源池内,复杂语句的并发数上限。

资源池的算力管控介绍
GaussDB(DWS)提供三种算力管控方式,分别是:内存管控、CPU管控和网络管控,本次主要介绍内存管控和CPU管控两种方式。
内存管控:GaussDB(DWS)为用户提供三种内存管控方式,用户可以根据业务需要,合理设置资源池级别的内存配比。
针对传统内存管理的弊端,GaussDB(DWS)设计实现了内存自适应技术,解除对work_mem的依赖,优化器依据统计信息对查询使用内存进行估算;执行器执行SQL过程中,如果使用内存超过估算内存即触发下盘;资源管理依据优化器估算的查询内存,对查询进行调度和管控。

CPU管控:GaussDB(DWS)使用cgroup实现了两种cpu管控能力,基于cpu.shares的共享配额管控和基于cpuset的专属限额管控。通过这两种方式,可以灵活地满足用户对于CPU资源不同维度的划分方式。
当作业超过资源池最大并发数时会造成资源池排队,短时的排队属于正常现象,但长时间持续排队,资源使用率就会变低。比较常见的是CCN排队,通常造成CCN排队的,主要是语句的估算内存耗尽导致,因此对于高内存开销的语句,需要通过合理的并发进行管控。

资源池评估方法
资源池的规划始终遵循由高到低来划分资源,优先配比高优先级,然后中优先级、最后低优先级;按照业务的SLA的要求,
- 高优先级满足峰值(无抖动、无排队);
- 中优先级均值满足(可抖动,不报错、不积压);
- 低优先级允许报错、超时;
可以根据TOPSql的UniqueSql_ID来进行归一化查询的资源汇总统计,分析不同业务的资源开销和并发诉求。
资源池高阶用法-query_band
资源池的传统用法是用户关联资源池,指定A用户进Resource_pool 1,B用户进Resource_pool 2,这样的归属方式要求我们对每一个业务归属非常清晰,实操难度大,会造成用户数无法控制的情况。因此我们还支持出另外一种资源池路由方式---query_band。用户发起的查询根据用户的执行参数先路由到query_band再路由到资源池,只需要识别query_band的key即可,不再关注作业对于用户的归属,降低资源池的规划难度。

资源池空间管控&算子下盘
GaussDB(DWS)为MPP架构,每个DN使用率不能超过当前磁盘空间总容量的90%(单个DN达到阈值后,触发集群自我保护机制,也就是只读),因此我们需要尽可能避免数据倾斜,GaussDB(DWS)提供了单语句的空间管控(默认10%磁盘容量大小,单次插入超过10%,当前query会触发熔断),以及用户和Schema空间管控的能力,来很好的帮助用户规划自己的空间资源。
欢迎感兴趣的开发者观看直播回放,了解详细信息。更多关于GaussDB(DWS)产品技术解析、数仓产品新特性的介绍,请关注GaussDB(DWS)论坛,技术博文分享、直播安排将第一时间发布在GaussDB(DWS)论坛。
论坛链接:https://bbs.huaweicloud.com/forum/forum-598-1.html
直播回放链接:https://bbs.huaweicloud.com/live/DTT_live/202306281630.html
掌握把“烂”SQL牢牢关进笼子里的密钥的更多相关文章
- 我也谈谈 代码调用存储过程超时,SQL Server Management Studio里运行很快的问题
最近遇到了一个问题就是 一个执行速度很快的存储过程,在代码中调用的时候却超时了. 后来看到了两篇文章: 其中一篇是这样介绍的 今天同事用代码调用存储过程时超时,在SQL Server Manageme ...
- [Swust OJ 567]--老虎在不在笼子里(凸包问题)
题目链接:http://acm.swust.edu.cn/problem/567/ Time limit(ms): 1000 Memory limit(kb): 65535 一只老虎自从看了< ...
- 14.3.3 Locks Set by Different SQL Statements in InnoDB 不同的SQL语句在InnoDB里的锁设置
14.3.3 Locks Set by Different SQL Statements in InnoDB 不同的SQL语句在InnoDB里的锁设置 locking read, 一个UPDATE,或 ...
- sql中同一个Trigger里同时包含Insert,Update,Delete
sql中同一个Trigger里同时包含Insert,Update,Delete SQLServer是靠Inserted表和Deleted表来处理的,判断一下就可以了,只不过比ORACLE麻烦一点 cr ...
- 怎么在SQL查询的结果里加行号?
怎么在SQL查询的结果里加行号? 学习了:https://zhidao.baidu.com/question/91188037.html mysql : ) as rowNo From a, () ) ...
- 命令式&函数式:把大象关进冰箱里问题
面向过程:把大象关进冰箱里: 把冰箱门打开=> 大象放冰箱里=> 冰箱门关上 面向对象: 冰箱.开门() 冰箱.放入(大象) 冰箱.关门() 函数式: 关进(冰箱,大象): 关门(放入(开 ...
- mysq 报错, sql语句在数据库里运行正常, 在内网测试正常,打包放外网的时候就报下面错误
sql语句为: select t1.day as day , any_value(IFNULL(t2.avgNum,0)) as avgNum, any_value(IFNULL(t2.maxNum, ...
- sql server 读取excel里的数据
以下是执行的sql代码,只拿简单读取数据举例,其他详细的,请自行查看 reconfigure RECONFIGURE GO GO SELECT * FROM OPENROWSET('Microsoft ...
- SQL 从查询结果里查询
有orders表: 我想要从从表中查出每天电动车和手机各自的销售总额.这个需求还是蛮简单的,仅仅须要依据createtime和product group by即可了.以下是我写的SQL语句: SELE ...
- sql语句查看库里有没有这张表,有就删除
查看库里有没有这张表,有就删除 DROP TABLE IF EXISTS 表名
随机推荐
- day16:Linux常用命令
Linux中目录含义 /bin 存放普通用户的命令文件/boot 存放系统启动文件/cdrom 存放读取光盘的相关文件/dev 设备文件 /etc 配置文件/home 家目录/lib 库文件/lib6 ...
- day33:进程锁&事件&进程队列&进程间共享数据
目录 1.锁:Lock 2.信号量:Semaphone 3.事件:Event 4.进程队列:Queue 5.生产者和消费者模型 6.JoinableQueue 7.Manager:进程之间共享数据 锁 ...
- Docker中Nginx搭建以及配置
docker nginx搭建 1 docker pull nginx docker pull nginx 2 启动nginx docker run --name nginx -p 80:80 -d n ...
- C++冒泡排序简单讲解
此文章我已在洛谷博客发布,不算抄袭 什么是冒泡排序 冒泡排序(Bubble Sort)也是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访 ...
- iptables四个表五条链
iptables四个表五条链 其实关于iptables的使用网上的资料和教程也比较多,主要是要理解其中的路由前和路由后每个表和链所处的位置和作用,明白了也就简单了,以下是我转载的觉得写的比较详 ...
- NOIP 2021 备战计划
NOIP 2021 备战计划 复习知识点: 加粗表示一定去复习,?表示很可能不需要 线段树.树状数组:无论最近写多少遍都要去好好复习 Dij.SPFA:理由同上 大DP:哪个不重要? 门类:线性DP. ...
- 新概念英语(New Concept English),前言
本书向读者提供了一套完整的,经过实践检验的英语学习体系,使得学生能够发挥自己的最大潜能. 听力 口语 阅读 写作 学习语言不在于掌握一套规则和积累大量词汇. 而在于如何运用所学的知识. 学习单词,必须 ...
- GaussDB(DWS)网络流控与管控效果
摘要:本文主要介绍GaussDB(DWS)网络流控能力,并对其管控效果进行验证. 本文分享自华为云社区<GaussDB(DWS)网络流控与管控效果>,作者:门前一棵葡萄树. 上一篇博文Ga ...
- dos命令、变量、字符编码、注释、用户输入
一.dos命令 1.dos命令 c: 切换盘符 cd c:\pthon 切换路径 dir 查看目录下的文件 cd .. 返回到上一层目录 cd ../.. 返回到上一层的上一层目录 二.环境变量的配置 ...
- IDEA中GIT提交后,发现提交有误想修改提交
问题描述:在IDEA开发工具中,使用GIT提交本地后,在push时发现有问题,想要修改提交的内容. 步骤 一:打开version control,点击log 二:找到提交记录,右键点击Undo com ...