写点什么

YashanDB 资源类型

作者:YashanDB
  • 2025-03-19
    广东
  • 本文字数:2179 字

    阅读完需:约 7 分钟

YashanDB 资源管理通过配置物理资源(CPU、内存等)的分配规则,以满足不同用户或程序对资源的需求:

  • CPU资源管理适用于单机部署(非级联备)和分布式部署,且适用于 LINUX 和 ARM 平台,不适用于 docker 容器。

  • 内存资源管理适用于单机部署(非级联备)和分布式部署。

  • 并行执行资源适用于单机部署(非级联备)和分布式部署。


CPU 资源管理

YashanDB 的 CPU 资源管理用于保证数据库在稳定运行的前提下,保障核心用户的使用和紧急任务的运行及最大限度提高 CPU 整体资源的利用率。

CPU 资源管理功能按节点生效,例如配置某个用户的 CPU 资源上限为 20%则表示该用户对环境中每个节点的 CPU 可使用上限为 20%。CPU 资源上限可能存在波动,上限+3%以内均属正常情况。

CPU 资源管理的资源计划指令主要通过 SHARESUTILIZATION_LIMITMGMT_P1 参数约束 CPU 使用份额。

SHARES

CPU 共享模式下的使用份额,须为[1,100]中的整数。当 CPU 资源不足时,该值越大就能获得更多的 CPU 资源。但是,具体分配的 CPU 资源需要根据与其它资源使用组的份额计算后确定。

为了确保内置资源使用组 SYS_GROUP 有足够的资源可用,当该组的共享资源(MGMT_P1)较少或较多时,系统会根据用户的输入进行动态调整。如果 SYS_GROUP 的 MGMT_P1 全局比例低于 40%或高于 60%时,系统会将 SYS_GROUP 的 MGMT_P1 调整为其它资源使用组的 MGMT_P1 总和。这种情况下,SYS_GROUP 的 MGMT_P1 值可能会超过 100(可以通过查看视图DBA_RSRC_PLAN_DIRECTIVES的MGMT_P1字段来了解,全局比例的计算公式是:SYS_GROUP的MGMT_P1 / 所有资源使用组的MGMT_P1总和)。

UTILIZATION_LIMIT

CPU 的最大可能使用率,须为[1,100]中的整数。无论系统的 CPU 资源如何,分配给资源使用组的 CPU 资源不会超过这个上限。计算 CPU 最大使用率的公式是UTILIZATION_LIMIT * CPU个数。例如一个用户映射的资源使用组设定的 UTILIZATION_LIMIT 为 10,CPU 的个数为 2,那么这个用户最多够使用的 20%的 CPU 资源。

MGMT_P1

CPU 共享模式下的使用份额,与 SHARES 参数相同含义。

MAX_UTILIZATION_LIMIT

CPU 的最大可能使用率,与 UTILIZATION_LIMIT 参数相同含义。

Note:

  • 当同时设置 MGMT_P1 和 SHARES 参数时,以 SHARES 参数为准。

  • 当同时设置 MAX_UTILIZATION_LIMIT 和 UTILIZATION_LIMIT 参数时,以 UTILIZATION_LIMIT 参数为准。


内存资源管理

YashanDB 用户内存资源管理,主要针对用户在一定时间内能独占的内存(即 SPA,详情参考内存体系)进行分配和管理,公共缓存或其他没有用户属性的内存区域则不在管理范围内。

用户内存资源管理的资源计划指令主要通过 SPA_LIMITSESSION_SPA_LIMITSPA_LIMIT_RESERVED EXECUTION_QUEUE_TIMEOUT 参数约束会话和资源使用组的内存使用。

SPA_LIMIT

计划指令中的SPA_LIMIT,表示对应资源使用组最大能使用整个系统的用户内存的比例值,公共缓存等其他内存不在限制内。在多实例部署下(例如分布式部署),SPA_LIMIT表示的是对应本地实例(或节点)内部 SPA 部分内存的占比。例如,CN 节点与 DN 节点在内存配置上有不同的大小,资源使用组能在对应节点上使用的 SPA 内存的上限,都是通过SPA_LIMIT的比例进行折算的,每个节点最终的内存大小不一定是一样的。

SESSION_SPA_LIMIT

资源使用组下的会话工作时,不仅受到整个资源使用组总的 SPA 内存上限比例SPA_LIMIT的限制,同时也受到单个会话自身的SESSION_SPA_LIMIT限制。SESSION_SPA_LIMIT表示该资源使用组下的会话(即会话对应的用户从属于该资源使用组),能使用资源使用组总的 SPA 内存上限的比例大小。例如资源使用组 HIGH_GROUP 的计划指令下SPA_LIMITSESSION_SPA_LIMIT分别是 50 和 10,那对应的会话能使用 SPA 内存的上限为 SPA 总内存的 5%(即 50% * 10%)。

会话运行过程中会受到会话 SPA 内存上限约束,同时多个会话并发运行也收到资源使用组 SPA 内存上限的约束。

SPA_LIMIT_RESERVED

在高并发性能敏感的场景下,SPA 内存的集中管控无法避免带来性能损耗。计划指令中的SPA_LIMIT_RESERVED,允许资源使用组将一定比例的 SPA 内存使用额度预留下来,提前平均分配给各个会话,使得会话在没有超出该预留额度前,无需向资源使用组申请或释放,从而获得更优的性能表现。

由于不同部署形态下活跃会话的数量不同,预留额度分配的基数也不同:

  • 单机部署下,预留额度按MAX_SESSIONS配置参数的值进行分配;

  • 分布式部署下,预留额度按MAX_WORKERS配置参数的值进行分配。如果MAX_WORKERS值为 0,则按对应服务器上 CPU 核数的 2 倍计算。

EXECUTION_QUEUE_TIMEOUT

分布式部署形态下,为了提高执行成功率,正式执行前会进行资源预占,同时在资源分配冲突导致失败后,支持重试处理。EXECUTION_QUEUE_TIMEOUT表示执行过程中的重试、等待的最大时间,不包含执行时间或重试的执行时间,超过这个时间则执行会失败报错。


并行执行资源管理

YashanDB 并行执行资源管理,通过在执行前预分配并行线程,有效减少系统在高并发情况下因并行线程不足而报错的情况。每个资源使用组分配了一定数量的可用并行线程,如果在执行时无法获取到足够的并行线程,系统会进行等待和重试,直到获取所需的线程资源。

并行执行资源管理的资源计划指令主要通过 PARALLEL_SERVER_LIMIT 参数约束资源使用组的并行线程使用。

PARALLEL_SERVER_LIMIT

资源使用组的最大并行资源百分比,须为[0,100]中的整数。根据系统总体可用的最大并行线程数MAX_PARALLEL_WORKERS,可以计算出每个资源使用组的可用并行线程数是 MAX_PARALLEL_WORKERS * (PARALLEL_SERVER_LIMIT / 100)

发布于: 刚刚阅读数: 4
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB资源类型_数据库_YashanDB_InfoQ写作社区