---
title: 编组
description: 租户请求队列积压 OceanBase是多租户的数据库集群，租户之间通过线程和协程分配调度 CPU 资源。当集群租户请求量升高，或者复杂的查询处理，CPU 资源不足就会表现为队列请求积压的情况，主要现象为 SQL 响应时间变长，处理响应速度变慢等，本文针对这种情况介绍了应急处理方法。 应急处理方法 当目前集群中租户遇到…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

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

# 租户请求队列积压

更新时间：2023-07-19 13:03:06

OceanBase是多租户的数据库集群，租户之间通过线程和协程分配调度 CPU 资源。当集群租户请求量升高，或者复杂的查询处理，CPU 资源不足就会表现为队列请求积压的情况，主要现象为 SQL 响应时间变长，处理响应速度变慢等，本文针对这种情况介绍了应急处理方法。

## 应急处理方法

当目前集群中租户遇到队列请求积压的情况时，我们可以从以下几个方面入手处理：

1. 尝试扩容租户 CPU 资源，或切主到负载较小的机器。

   对租户内 CPU 的扩容可以通过修改 `UNIT_CONFIG`、`UNIT_NUM` 来实现扩容 CPU；推荐通过 OCP 执行操作。命令行的操作方法如下：

      1. 使用 `root` 用户登录到数据库的 `sys` 租户。
      2. 执行以下 SQL 语句，确认当前租户使用的 `unit_config`。

        > **注意**
        >
        >  
        >
        > 多个副本可能使用了不同的 `resource_pool`，您需分别做出调整。

        ```sql
        SELECT a.tenant_name,a.tenant_id,b.name unit_config,c.name pool_name,b.max_cpu,b.min_cpu,
        round((b.max_memory/1024/1024/1024)) max_memory,round((b.min_memory/1024/1024/1024)) min_memory
        FROM
        __all_tenant a,
        __all_unit_config b,
        __all_resource_pool c
        WHERE a.tenant_id=c.tenant_id
        AND b.unit_config_id = c.unit_config_id
        ORDER BY a.tenant_id desc;

        ```
      3. 执行修改 Unit 的 SQL 语句。

        > **注意**
        >
        >  
        >
        > 截止 OceanBase 数据库 V3.2.x 版本，修改 `resource unit` 配置仅 CPU、Memory 配置是实际生效的，其他 IO 参数，例如磁盘、iops 等都暂时无效，默认即可。

        ```sql
        ALTER RESOURCE UNIT unit_config_name min_cpu=2,max_cpu=2, max_memory='4G',min_memory='4G', max_disk_size='500G',max_iops=10000,min_iops=10000,max_session_num=10000;

        ```
 2. 对于多 unit 的租户，集群级别的扩容可以向 Zone 内添加 OBServer 节点，然后增加 `unit_num` 来实现。详情请参见 [扩容和缩容](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000357848)。
 3. 如果发现执行次数出现异常突刺的 SQL，和业务确认后执行限流。

      1. 判断执行次数有突刺的 SQL。

        参考 OCP 中的 SQL 诊断功能，查看 SQL 的历史执行趋势，勾选执行次数选项，即可查看指定时间内某条 SQL 的执行次数趋势。
      2. 进行 SQL 限流。

        通过绑定 SQL 的执行计划加入 hint max_concurrent 来限制 SQL 并发，实现对 SQL 的限流。示例如下：

        ```sql
        CREATE OUTLINE outline_name ON sql_id USING HINT /*+max_concurrent(1)*/;

        ```

        更多信息请参见 [CREATE OUTLINE（MySQL 模式）](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000356926) 和 [CREATE OUTLINE（Oracle 模式）](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000357355)。

 上一篇 下一篇 ![有帮助](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) 咨询热线
