---
title: "后台任务的资源隔离配置案例 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: 后台任务的资源隔离配置案例 当前 OceanBase 数据库的内核有十几种资源请求类型，包括前台任务及后台任务，而大部分后台任务的优先级并不是特别高，因此，需要对这些后台任务资源进行资源隔离，并默认开启资源隔离。 由于 配置租户内资源隔离 中通过自由配置后台任务的资源隔离的配置方法比较复杂，本节通过将资源请求类型进行…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.5.0

# 后台任务的资源隔离配置案例

更新时间：2026-01-15 15:25:30

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/600.manage/200.tenant-management/600.common-tenant-operations/300.resource-isolation/400.background-resource-isolation-of-mysql-or-oracle-mode.md)  

当前 OceanBase 数据库的内核有十几种资源请求类型，包括前台任务及后台任务，而大部分后台任务的优先级并不是特别高，因此，需要对这些后台任务资源进行资源隔离，并默认开启资源隔离。

由于 [配置租户内资源隔离](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479263) 中通过自由配置后台任务的资源隔离的配置方法比较复杂，本节通过将资源请求类型进行分组的方式，为后台任务的资源隔离提供一个推荐的配置方法。

## 资源请求类型分组

由于当前资源隔离的配置方式比较复杂，为了简化配置，可以将这些资源请求类型进行分组，总体可以分为以下资源组：

- clog 日志提交资源组：CLOG_HIGH_GROUP
 - 转储资源组：COMPACTION_HIGH_GROUP
 - 后台任务资源组：BACKGROUND_GROUP

上述各资源组中包含的资源请求类型如下表所示。有关各资源请求类型（后台任务）对应的详细说明，参见 [资源隔离概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476488)。

| 资源组 | 包含的资源请求类型 |
| --- | --- |
| CLOG_HIGH_GROUP | CLOG_HIGH |
| COMPACTION_HIGH_GROUP | COMPACTION_HIGH |
| BACKGROUND_GROUP | - COMPACTION_LOW - COMPACTION_MID - HA_LOW - HA_MID - HA_HIGH - DDL - DDL_HIGH - CLOG_LOW - CLOG_MID - OPT_STATS - GC_MACRO_BLOCK - IMPORT - SQL_AUDIT - MVIEW - REPLAY_HIGH |

## 资源隔离策略

根据分组情况，可以为这些资源组规划资源隔离策略。推荐的资源隔离策略如下。

| 资源组 | MIN_IOPS | MAX_IOPS | IOPS_WEIGHT | MAX_CPU | CPU_WEIGHT |
| --- | --- | --- | --- | --- | --- |
| CLOG_HIGH_GROUP | 40 | 100 | 100 | 100 | 30 |
| COMPACTION_HIGH_GROUP | 30 | 100 | 50 | 100 | 70 |
| BACKGROUND_GROUP | 10 | 100 | 30 | 100 | 70 |

#### 说明

由于后台任务 `CLOG_HIGH` 会直接影响业务请求的延迟，对 I/O 请求的要求应尽量得到满足，因此将资源组 `CLOG_HIGH_GROUP` 中的 `MIN_IOPS` 配置为 40；同时该任务对 CPU 的要求不高，故将 `CPU_WEIGHT` 配置为 30。

## 配置后台任务的资源隔离

### 前提条件

1. 由于 CPU 的资源隔离依赖 cgroup，如果需要控制 CPU 的资源隔离，则在配置后台任务的资源隔离前，必须配置 cgroup 目录并开启 cgroup 功能。

   配置 cgroup 目录并开启 cgroup 功能的相关操作，参见 [配置 cgroup](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479257)。
 2. （可选）配置后台任务的资源隔离前，可以进行磁盘性能校准，并配置租户 Unit 的 IOPS。

   #### 说明

   在当前版本中，CPU 和 IOPS 资源隔离均不再强依赖磁盘性能校准操作。

      1. 使用 `root` 用户登录到集群的 `sys` 租户。
      2. 执行磁盘性能校准。

             1. 执行以下命令，触发磁盘校准任务。

               ```shell
               obclient> ALTER SYSTEM RUN JOB "io_calibration";

               ```
             2. 语句执行成功后，执行以下命令，查看校准进度。

               ```shell
               obclient> SELECT * FROM  oceanbase.GV$OB_IO_CALIBRATION_STATUS;

               ```
             3. 校准完成到生效可能需要 1~2 分钟，待生效后，执行以下命令，查看校准值。

               ```shell
               obclient> SELECT * FROM  oceanbase.GV$OB_IO_BENCHMARK;

               ```
      3. 配置租户 Unit 的 IOPS。根据上一步中所查询的 OBServer 节点上的磁盘校准值，使用 16 KB 读的磁盘校准值作为该节点 IOPS 设置的上限值。

        有关租户 Unit 的 IOPS 的详细配置及说明，参见 [配置租户内资源隔离](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479263) 中 **将租户的 MAX_IOPS 和 MIN_IOPS 配置为有效值** 的内容。

### 操作步骤

1. 用户租户的租户管理员登录集群的 MySQL 租户或 Oracle 租户。
 2. 执行以下 SQL，以配置后台任务的资源隔离。

   ```shell
   /*创建 plan*/
   CALL DBMS_RESOURCE_MANAGER.CREATE_PLAN('GLOBAL_PLAN','plan for global');

   /*创建资源组 COMPACTION_HIGH_GROUP*/
   CALL DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( CONSUMER_GROUP => 'COMPACTION_HIGH_GROUP', COMMENT => 'COMPACTION_HIGH_GROUP');
   CALL DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'GLOBAL_PLAN', GROUP_OR_SUBPLAN => 'COMPACTION_HIGH_GROUP' , COMMENT => 'COMPACTION_HIGH_GROUP', MAX_IOPS => 100, MIN_IOPS => 30, WEIGHT_IOPS => 50,UTILIZATION_LIMIT => 100, MGMT_P1 => 70);
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'COMPACTION_HIGH', 'COMPACTION_HIGH_GROUP');

   /*创建资源组 CLOG_HIGH_GROUP*/
   CALL DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( CONSUMER_GROUP => 'CLOG_HIGH_GROUP', COMMENT => 'CLOG_HIGH_GROUP');
   CALL DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'GLOBAL_PLAN', GROUP_OR_SUBPLAN => 'CLOG_HIGH_GROUP' , COMMENT => 'CLOG_HIGH_GROUP', MAX_IOPS => 100, MIN_IOPS => 40, WEIGHT_IOPS => 100, UTILIZATION_LIMIT => 100, MGMT_P1 => 30);
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'CLOG_HIGH', 'CLOG_HIGH_GROUP');

   /*创建资源组 BACKGROUND_GROUP*/
   CALL DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP( CONSUMER_GROUP => 'BACKGROUND_GROUP', COMMENT => 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE( PLAN => 'GLOBAL_PLAN', GROUP_OR_SUBPLAN => 'BACKGROUND_GROUP' , COMMENT => 'BACKGROUND_GROUP', MAX_IOPS => 100, MIN_IOPS => 10, WEIGHT_IOPS => 30, UTILIZATION_LIMIT => 100, MGMT_P1 => 70);
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'COMPACTION_LOW', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'COMPACTION_MID', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'HA_LOW', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'HA_MID', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'HA_HIGH', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'DDL', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'DDL_HIGH', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'CLOG_LOW', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'CLOG_MID', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'OPT_STATS', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'GC_MACRO_BLOCK', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'IMPORT', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'SQL_AUDIT', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'MVIEW', 'BACKGROUND_GROUP');
   CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('FUNCTION', 'REPLAY_HIGH', 'BACKGROUND_GROUP');

   /*使 plan 生效*/
   SET GLOBAL resource_manager_plan = 'GLOBAL_PLAN';

   ```

## 相关文档

本节仅提供了后台任务资源隔离的推荐配置方法，租户内其他类型的隔离配置，参考以下文档进行配置：

- [配置租户内资源隔离（MySQL 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479263)
 - [配置租户内资源隔离（Oracle 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479250)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
