Skip to main content

租户内资源隔离概述

因为 OceanBase 数据库会把 Unit 当作给租户分配资源的基本单位,在创建租户时就会为租户创建好相应的资源,所以在一定程度上可以把租户间的资源隔离理解成是 OceanBase 原生自带的资源隔离。

对于社区版的 OceanBase 来说,一个租户对应的是一个 MySQL 实例,租户(tenant)内不同用户(user)间的资源隔离,以及还有一些比用户粒度更细的资源隔离,就需要进行一定的配置了。这也是本小节的重点内容。

租户内的资源隔离方式

OceanBase 数据库中通过 PL 的 DBMS_RESOURCE_MANAGER 系统包来管理数据库中资源的分配从而实现资源隔离。

通过 DBMS_RESOURCE_MANAGER 系统包配置租户内的资源隔离时,从资源隔离的使用粒度,可以分为以下几种类型:

  • User 级资源隔离

    User 级资源隔离是通过指定用户与资源组的映射关系,使该用户执行的所有 SQL 使用的资源即为对应 Group 分配的资源。

  • SQL 级资源隔离

    SQL 级的资源隔离是比 User 级粒度更细的隔离方式。它是通过将满足某个条件的 SQL 绑定到指定资源组上执行来实现的。通常适用的场景是,业务中存在多个账号,处理一个账号的一个订单时,会开启一个事务然后执行一批与该账号相关的 SQL (通常是在 WHERE 条件中指定账号的值)。账号中可能存在大账号(数据量较大)和小账号(数据量较小),为了避免大账号把 CPU 资源用完导致小账号的订单无法得到处理,可以将处理不同订单的 SQL 绑定到不同的资源组,绑定后不同订单的 SQL 就会使用不同资源组的资源。

  • Function 级资源隔离

    Function 级的资源隔离是通过指定后台任务与资源组的映射关系,隔离各任务使用的资源。Function 级资源隔离用于控制后台任务 CPU 的使用。

DBMS_RESOURCE_MANAGER 系统包

DBMS_RESOURCE_MANAGER 系统包主要用于维护以下元素:

  • 资源组:根据资源要求组合在一起的一组会话。系统将资源分配给资源组,而不是单个会话。

  • 资源管理计划:资源管理计划内容的容器,指定如何将资源分配给资源组。可以通过激活特定的资源管理计划来控制资源的分配。

  • 资源管理计划内容:用于将资源组与资源管理计划相关联,并指定如何将资源分配给该资源组。

关于 DBMS_RESOURCE_MANAGER 系统包的详细介绍,请参见:DBMS_RESOURCE_MANAGER 系统包(MySQL 模式)

Loading...