基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
资源隔离概述
更新时间:2023-07-25 13:45:37
本文主要介绍了资源隔离相关的概念、资源隔离方式及其适用场景。
功能适用性
该功能目前仅在 OceanBase 数据库 Oracle 模式下支持。
cgroups(Control Groups)是 Linux 内核提供的一种机制,这种机制可以根据特定的行为,将一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架。
OceanBase 数据库的当前版本中,由于租户工作线程和大部分后台线程均根据租户来区分,网络线程为共享线程,管理员可以在配置 cgroup 目录后,再通过 DBMS_RESOURCE_MANAGER 系统包来控制租户 CPU 的占用。当前仅 Oracle 模式支持通过该方式来进行 CPU 资源隔离,MySQL 模式暂不支持。
DBMS_RESOURCE_MANAGER 系统包
OceanBase 数据库中通过 PL 的 DBMS_RESOURCE_MANAGER 系统包来管理数据库中资源的分配从而实现资源隔离。DBMS_RESOURCE_MANAGER 系统包主要用于维护以下元素:
资源组:根据资源要求组合在一起的一组会话。系统将资源分配给资源组,而不是单个会话。
资源管理计划:资源管理计划内容的容器,指定如何将资源分配给资源组。您可以通过激活特定的资源管理计划来控制资源的分配。一条资源管理计划可以对应多条资源管理计划内容。但一条资源管理计划中不能包含两条相同的资源管理计划内容。
资源管理计划内容:用于将资源组与资源管理计划相关联,并指定如何将资源分配给该资源组。
关于 DBMS_RESOURCE_MANAGER 系统包的详细介绍,请参见 DBMS_RESOURCE_MANAGER 系统包。
资源隔离方式
数据库中的资源隔离从使用粒度,可以分为用户级资源隔离和 SQL 级资源隔离。
用户级的资源隔离支持将用户绑定在特定的资源组上,绑定后该用户执行的 SQL,就会使用特定资源组的 CPU 资源。该方式适用于不同的用户执行不同类型的 SQL 的场景。例如,为了隔离 AP 和 TP 业务的资源,您可以创建一个 AP 和一个 TP 用户分别绑定到两个资源组上,两个用户分别执行 AP 和 TP 所需的 SQL。
SQL 级的资源隔离是比用户级粒度更细的隔离方式。通常适用的场景是,业务中存在多个账号,处理一个账号的一个订单时,会开启一个事务然后执行一批与该账号相关的 SQL (通常是在 WHERE 条件中指定账号的值)。账号中可能存在大账号(数据量较大)和小账号(数据量较小),为了避免大账号把 CPU 资源用完导致小账号的订单无法得到处理,可以将处理不同订单的 SQL 绑定到不同的资源组,绑定后不同订单的 SQL 就会使用不同资源组的 CPU 资源。