GaussDB细粒度资源管控技术透视
本文分享自华为云社区《【GaussTech速递】技术解读之细粒度资源管控》,作者:GaussDB 数据库。
背景
对数据库集群内资源管控与资源隔离一直是企业客户长久以来的诉求。华为云GaussDB作为一款企业级分布式数据库,一直致力于满足企业对大型数据库集群的管理需要。
数据库可以管理的资源有计算资源与存储资源,计算资源包括CPU、内存、IO与网络,存储资源包括数据存储空间、日志存储空间与临时文件等。
从用户角度来看,资源管控通过设定阈值或者优先级限定程序对资源的使用,保证承诺服务等级协议的同时,又满足不同用户间资源隔离,达成多个租户共享数据库资源的目的。
从系统的角度来看,引入资源监控与控制的手段,可以实现资源在可控情况下被合理利用的目的,避免资源耗尽,防止系统停止响应、崩溃等情况的发生。作业优先级,可以保证作业平稳运行,避免某个作业占用资源过高时影响其他作业,并在资源富裕时,实现资源利用的最大化。除此以外,还能满足外部的期望,保证系统资源使用最大化。通过对作业控制,可以保证作业是平稳的,避免作业执行过程中出现不可控的行为。
为了解决上述目标,华为云GaussDB数据库提供了一种对数据库集群内资源进行细粒度管控的方案——细粒度资源管控。该方案在不同的管控粒度(如用户级、会话级与语句级)和不同的管控维度(CPU、内存与IO)都提供了对应的管控能力。用户可以根据自己业务需求采取合适的管控维度与管控粒度来达成资源管控与资源隔离的目标,满足不同场景的资源控制的需要。
技术架构
create resource pool respool_tp with(control_group="cgroup_tp", max_dynamic_memory="5GB", max_shared_memory="5GB", io_limits=50, io_priority="High"); alter role tp_user RESOURCE POOL 'respool_tp'; create resource pool respool_report with(control_group="cgroup_report", max_dynamic_memory="3GB", max_shared_memory="3GB", io_limits=30, io_priority="Medium"); alter role report_user RESOURCE POOL 'respool_report'; create resource pool respool_other with(control_group="cgroup_other", max_dynamic_memory="1GB", max_shared_memory="1GB", io_limits=10, io_priority="Low"); alter role other_user RESOURCE POOL 'respool_other';
关键能力
CPU管控
gs_cgroup -c -S cgroup_tp -s 50; gs_cgroup -c -S cgroup_report -s 30; gs_cgroup -c -S cgroup_other -s 10;
内存管控
IO管控
连接数与并发管控
alter resource pool respool_tp with(max_connections=-1, max_concurrency = -1); alter resource pool respool_report with(max_connections=200, max_concurrency = 100); alter resource pool respool_other with(max_connections=100, max_concurrency = 50);
存储空间管控
alter user tp_user PERM SPACE '200G' TEMP SPACE '20G' SPILL SPACE '20G'; alter user report_user PERM SPACE '100G' TEMP SPACE '10G' SPILL SPACE '10G'; alter user other_user PERM SPACE '100G' TEMP SPACE '10G' SPILL SPACE '10G';
特性演示
1. 创建控制组:
gs_cgroup -c -S class1 -s 20; gs_cgroup -c -S class2 -s 60;
2. 创建资源池:
CREATE RESOURCE POOL xuuer_pool with(control_group = "class1"); CREATE RESOURCE POOL xyuser1_pool with(control_group = "class2");
3. 创建用户绑定资源池:
create role user1 RESOURCE POOL 'xuuer_pool'; create role user2 RESOURCE POOL 'xyuser1_pool';
整理两个用户的CPU使用率并绘制曲线图如下图,可看出user1与user2的CPU使用率最终会平衡到3比1的状态,符合资源池对应的CGroup控制组里设置的20%与60%的比例,达到了CPU管控的效果。
总结
细粒度资源管控作为多租户的资源隔离的底座,实现资源的精准划分与控制,并解决高负载场景下资源不足而导致集群不可服务的问题。该特性适用于数据隔离不敏感,但对不同业务有资源隔离需求的场景,如果客户对资源隔离和数据隔离都有需求的话,可以关注一下我们后面即将分享的多租数据库特性哦!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
用一只小猪来解释 On-Prem, IaaS, PaaS 和 SaaS 的区别
亚马逊云科技首席布道师 Jeff Barr 在[推](https://x.com/jeffbarr/status/892767314168365056)上发过一张图,用一只小猪🐷讲清了 On-Prem, IaaS, PaaS 和 SaaS 的区别。 虽然历史悠久,但图片内容一点也没有过时。 On-prem 本地部署 本地部署(on-prem, 或 on-premise)指将软件或计算基础设施部署在本地的设备或服务器上,使其能够在本地环境中运行和使用。这种部署方式与云计算(cloud computing)形成了对比。 当一个系统或应用部署在本地时,其软件、服务器及必要的基础设施都安装在组织的数据中心或服务器房间,用户需要自行管理和维护这些硬件和软件,包括更新、安全保护和数据备份。 本地部署使得用户能够直接控制其数据、应用和基础设施。这种模式适用于需要严格的安全性和合规性、或必须将敏感数据留在本地、亦或网络连接不稳定的情况。 但是本地部署需要较大的前期投资,包括硬件、基础设施建设以及 IT 人员,这些都需得靠用户组织自行管理。之后,组织还得自行扩展这些基础设施以满足需求,并保证系统的高可...
- 下一篇
vxe-table 4.6.10 已经发布,vue 表格解决方案
vxe-table 4.6.10 已经发布,vue 表格解决方案 此版本更新内容包括: 支持暗黑模式 table 修复自定义列设置缓存排序状态无效问题 优化样式 支持暗黑主题 详情查看:https://gitee.com/xuliangzhan_admin/vxe-table/releases/4.6.10
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8