GaussDB细粒度资源管控技术透视
内容提要
华为云GaussDB数据库通过细粒度资源管控方案实现资源隔离和多租户共享数据库资源的目的。该方案设定阈值或优先级限制程序对计算和存储资源的使用,详细介绍了技术架构、运行原理和管控能力。细粒度资源管控帮助企业实现资源的精确划分和控制,解决高负载场景下资源不足的问题。
延伸解读
资源管控的粒度与维度
GaussDB的细粒度资源管控支持用户级、会话级和语句级三种粒度,覆盖CPU、内存、IO等计算资源以及存储空间。用户可根据业务需求灵活选择管控粒度与维度,实现精准的资源隔离。例如,通过资源池绑定用户,可限制其CPU份额、内存上限和IO优先级,确保关键业务在资源争抢时获得保障。
CPU管控的实现与注意事项
CPU管控基于Linux CGroup实现,通过控制组层级隔离数据库程序、后台线程和用户作业。GaussDB引入线程组概念,将线程数量与CPU份额对齐,提升管控效果。但需注意,线程绑定CGroup的系统调用较耗时,且CGroup的管控效果在线程数与CPU成比例时最佳。此外,支持两级资源池(组资源池和业务资源池)实现部门与业务间的层级管控。
内存与IO管控机制
内存管控通过动态内存和共享缓存的阈值设置实现,分配前进行逻辑判断和记账,超限则申请失败。IO管控采用逻辑IO统计,对用户读写IO进行限制,支持数值模式和优先级模式。当磁盘使用率超过95%时,优先级模式可控制作业的IO触发比例,避免资源争抢。会话级GUC参数可进一步细化管控。
存储空间与连接数管控
存储空间管控通过为用户指定永久表空间、临时表空间和算子下盘空间的配额,防止单用户占用过多存储资源。连接数与并发管控通过资源池的max_connections和max_concurrency参数实现,超限的连接会被拦截,超出的并发作业进入等待队列。这些管控实时生效,有助于维持系统稳定。
Q&A
GaussDB的细粒度资源管控技术有什么主要功能?
GaussDB的细粒度资源管控技术主要实现资源隔离和多租户共享数据库资源,支持计算资源和存储资源的管理。
如何在GaussDB中设置资源池以管理CPU和内存?
用户可以创建资源池并指定CPU和内存的使用份额,通过控制组(CGroup)实现资源的管控。
GaussDB如何确保不同用户之间的资源隔离?
GaussDB通过设定阈值或优先级来限制程序对资源的使用,从而实现用户间的资源隔离。
GaussDB的IO管控是如何工作的?
GaussDB采用逻辑IO统计方式,对用户的读写IO进行限制,避免资源争抢,并通过等待队列管理IO请求。
在GaussDB中如何管理存储空间以防止资源过度使用?
GaussDB通过在创建用户时指定存储空间大小,限制用户的存储空间使用,防止单用户占用过多资源。
细粒度资源管控技术适用于哪些场景?
该技术适用于对资源隔离有需求的场景,尤其是在数据隔离不敏感但对不同业务有资源隔离需求的情况下。