资源隔离学习

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

User 级资源隔离

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

SQL 级资源隔离

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

Function 级资源隔离

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

当前支持控制 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_high:clog 日志提交任务。
    opt_stats:统计信息收集任务。