摘要:本文通过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牢牢关进笼子里的密钥的更多相关文章

  1. 我也谈谈 代码调用存储过程超时,SQL Server Management Studio里运行很快的问题

    最近遇到了一个问题就是 一个执行速度很快的存储过程,在代码中调用的时候却超时了. 后来看到了两篇文章: 其中一篇是这样介绍的 今天同事用代码调用存储过程时超时,在SQL Server Manageme ...

  2. [Swust OJ 567]--老虎在不在笼子里(凸包问题)

    题目链接:http://acm.swust.edu.cn/problem/567/ Time limit(ms): 1000 Memory limit(kb): 65535   一只老虎自从看了< ...

  3. 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,或 ...

  4. sql中同一个Trigger里同时包含Insert,Update,Delete

    sql中同一个Trigger里同时包含Insert,Update,Delete SQLServer是靠Inserted表和Deleted表来处理的,判断一下就可以了,只不过比ORACLE麻烦一点 cr ...

  5. 怎么在SQL查询的结果里加行号?

    怎么在SQL查询的结果里加行号? 学习了:https://zhidao.baidu.com/question/91188037.html mysql : ) as rowNo From a, () ) ...

  6. 命令式&函数式:把大象关进冰箱里问题

    面向过程:把大象关进冰箱里: 把冰箱门打开=> 大象放冰箱里=> 冰箱门关上 面向对象: 冰箱.开门() 冰箱.放入(大象) 冰箱.关门() 函数式: 关进(冰箱,大象): 关门(放入(开 ...

  7. mysq 报错, sql语句在数据库里运行正常, 在内网测试正常,打包放外网的时候就报下面错误

    sql语句为: select t1.day as day , any_value(IFNULL(t2.avgNum,0)) as avgNum, any_value(IFNULL(t2.maxNum, ...

  8. sql server 读取excel里的数据

    以下是执行的sql代码,只拿简单读取数据举例,其他详细的,请自行查看 reconfigure RECONFIGURE GO GO SELECT * FROM OPENROWSET('Microsoft ...

  9. SQL 从查询结果里查询

    有orders表: 我想要从从表中查出每天电动车和手机各自的销售总额.这个需求还是蛮简单的,仅仅须要依据createtime和product group by即可了.以下是我写的SQL语句: SELE ...

  10. sql语句查看库里有没有这张表,有就删除

    查看库里有没有这张表,有就删除 DROP TABLE IF EXISTS 表名

随机推荐

  1. Python 明明安装了Crypto模,但报错No module named “Crypto“

    安装网上的解决方法卸载:pip uninstall cryptopip uninstall pycryptodomepip uninstall pycrypto重装:pip install Crypt ...

  2. java POI创建HSSFWorkbook工作簿

    1. POI Apache POI 是基于 Office Open XML 标准(OOXML)和 Microsoft 的 OLE 2 复合文档格式(OLE2)处理各种文件格式的开源项目. 2. 样式设 ...

  3. Claude:除ChatGPT外的另一种选择

    前言 Claude 是 Anthropic 开发的人工智能产品.Anthropic 是由 11 名前 OpenAI 员工于 2022 年创立的人工智能公司,旨在构建安全.可解释和有益于人类的人工智能系 ...

  4. vue项目PC端如何适配不同分辨率屏幕

    配置前言 项目构建:基于vue-cli3构建,使用postcss-px2rem px2rem-loader插件进行rem适配实现原理:每次打包,webpack通过使用插件postcss-px2rem, ...

  5. vue-cli3构建和发布 实现分环境打包步骤(给不同的环境配置相对应的打包命令)

    https://panjiachen.github.io/vue-element-admin-site/zh/guide/essentials/deploy.html#%E6%9E%84%E5%BB% ...

  6. [C++基础入门] 6、 函数

    文章目录 6 函数 6.1 概述 6.2 函数的定义 6.3 函数的调用 6.4 值传递 6.5 函数的常见样式 6.6 函数的声明 6.7 函数的分文件编写 6 函数 6.1 概述 **作用:**将 ...

  7. css3 flex弹性布局详解

    一.flexbox弹性盒子 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这 ...

  8. .Net开发的音频分离桌面应用,可用于提取背景音乐

    背景音乐对于视频来说是非常重要的,制作视频的人来说,听到一些符合自己视频的背景音乐,又找不到背景音乐的源音乐,这时候就需要有软件帮助提取背景音乐了. 项目简介 这是基于C#开发的UI界面,支持中文等多 ...

  9. "树形List"与"扁平List"互转(Java实现)

    背景:在平时的开发中,我们时常会遇到下列场景 公司的组织架构的数据存储与展示 文件夹层级的数据存储与展示 评论系统中,父评论与诸多子评论的数据存储与展示 ...... 对于这种有层级的结构化数据,就像 ...

  10. 2022-09-06:以下go语言代码输出什么?A:Hi All;B:Hi go All;C:Hi;D:go All。 package main import “fmt“ func app() f

    2022-09-06:以下go语言代码输出什么?A:Hi All:B:Hi go All:C:Hi:D:go All. package main import "fmt" func ...