首批通过分布式安全可靠测评,为关键业务系统打造
资源隔离概述
更新时间:2026-07-29 10:39:50
本文主要介绍了资源隔离相关的概念及分类。
cgroup (Control Groups)是 Linux 内核提供的一种机制,这种机制可以根据特定的行为,将一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架。
在 OceanBase 数据库中,按照隔离的层级,资源隔离可以分为:全局资源隔离、租户间资源隔离以及租户内资源隔离。
全局资源隔离
全局资源隔离是从集群层面统一管控所有用户租户的前台与后台任务 CPU 资源的使用。该功能通过对所有用户租户后台任务的 CPU 使用上限进行统一限制,从而避免后台任务对前台业务性能造成影响。有关全局资源隔离的详细配置方法,参见 使用全局 CPU 资源的前后台隔离。
租户间资源隔离
在创建租户时,系统租户会为用户租户指定 Unit 规格,租户间的资源隔离即按照 Unit 规格来划分控制,其隔离的资源包括:CPU、内存、磁盘空间、IOPS 等。
其中,各租户 Unit 规格中的 MAX_CPU 和 MIN_CPU 决定了 CPU 资源隔离的策略;各租户 Unit 规格中的 MAX_IOPS、MIN_IOPS 和 IOPS_WEIGH 决定了 IOPS 资源隔离的策略。
租户内资源隔离
租户内资源隔离主要通过 DBMS_RESOURCE_MANAGER 系统包来对租户的 CPU 和 IOPS 资源占用进行控制。
DBMS_RESOURCE_MANAGER 系统包概述
OceanBase 数据库通过 PL 的 DBMS_RESOURCE_MANAGER 系统包来管理数据库中资源的分配从而实现资源隔离。 DBMS_RESOURCE_MANAGER 系统包主要用于维护以下元素:
资源组:根据资源要求组合在一起的一组会话。系统将资源分配给资源组,而不是单个会话。
资源管理计划:资源管理计划内容的容器,指定如何将资源分配给资源组。您可以通过激活特定的资源管理计划来控制资源的分配。一条资源管理计划可以对应多条资源管理计划内容。但一条资源管理计划中不能包含两条相同的资源管理计划内容。
资源管理计划内容:用于将资源组与资源管理计划相关联,并指定如何将资源分配给该资源组。
关于 DBMS_RESOURCE_MANAGER 系统包的详细介绍,请参见 DBMS_RESOURCE_MANAGER 系统包(Oracle 模式) 和 DBMS_RESOURCE_MANAGER 系统包(MySQL 模式)。
资源隔离方式
通过 DBMS_RESOURCE_MANAGER 系统包配置租户内的资源隔离时,按照资源的分配粒度,可以分为以下几种:
User 级资源隔离
User 级资源隔离是通过指定用户与资源组的映射关系,使该用户执行的所有 SQL 使用的资源即为对应 Group 分配的资源。
SQL 级资源隔离
SQL 级的资源隔离是比 User 级粒度更细的隔离方式。它是通过将满足某个条件的 SQL 绑定到指定资源组上执行来实现的。通常适用的场景是,业务中存在多个账号,处理一个账号的一个订单时,会开启一个事务然后执行一批与该账号相关的 SQL (通常是在 WHERE 条件中指定账号的值)。账号中可能存在大账号(数据量较大)和小账号(数据量较小),为了避免大账号把 CPU 资源用完导致小账号的订单无法得到处理,可以将处理不同订单的 SQL 绑定到不同的资源组,绑定后不同订单的 SQL 就会使用不同资源组的资源。
Function 级资源隔离
Function 级的资源隔离是通过指定后台任务与资源组的映射关系,隔离各任务使用的资源。Function 级资源隔离用于控制后台任务 CPU 和 IOPS 的使用。
当前支持控制 DAG 线程对应的以下几种后台任务的使用资源:
- COMPACTION_HIGH: Mini Merge 和 DDL KV Merge 任务
- HA_HIGH:复制、Rebuild 和恢复等高优先级高可靠任务
- COMPACTION_MID:Minor Merge 任务
- HA_MID:中优先级高可靠任务,例如迁移任务
- COMPACTION_LOW:Major Merge 任务
- HA_LOW:备份和备份清理等低优先级高可靠任务
- DDL:唯一索引校验、删列补数据等场景的任务
- DDL_HIGH:DDL MemTable 的转储任务
- CLOG_LOW:物理备库和 CDC 读取任务
- CLOG_MID:日志归档读本地盘等任务
- CLOG_HIGH:clog 写入本地盘、Follower 副本读本地盘等任务
- OPT_STATS:统计信息收集任务
- GC_MACRO_BLOCK:宏块回收和复用任务
- SQL_AUDIT:SQL 审计日志落盘
- IMPORT:导入任务
- MVIEW:物化视图后台任务(对于 V4.3.5 版本,从 V4.3.5 BP2 版本开始支持)
- REPLAY_HIGH:日志回放(对于 V4.3.5 版本,从 V4.3.5 BP2 版本开始支持)
Database 级资源隔离
注意
- 在 OceanBase 数据库中,仅 MySQL 模式支持 Database 级资源隔离,Oracle 模式不支持 Database 级资源隔离。
- Database 级资源隔离的开关由租户级隐藏配置项
_enable_database_isolation_mode控制,其默认值为False,表示不开启 Database 级资源隔离。如果要修改配置项值,修改后,需要重启才能生效。
Database 级资源隔离通过将具体的 Database 与资源组进行绑定,对 Database 上的所有请求进行资源隔离。