本文分享自华为云社区《直播回顾 | 把握把“烂”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)论坛。
论坛链接:bbs.huaweicloud.com/forum/forum…
直播回放链接:bbs.huaweicloud.com/live/DTT_li…
点击重视,第一时间了解华为云新鲜技能~