更新时间:2024-04-26 GMT+08:00

功能介绍

GaussDB(DWS)资源池的具体功能包括:并发管理、内存管理、CPU管理以及异常规则。

并发管理

并发,即资源池中的最大查询并发数。并发管理作为运行前管理,用于限制查询并发运行的数量,通过限制查询并发数降低资源争抢,保证资源的有序高效利用。

在资源池页面“短查询配置”一栏,您可以通过开关键决定是否开启短查询加速功能。如果需要对简单语句并发数(默认值为-1,0 或-1表示不控制)进行修改,可选择打开短查询加速。

并发管理规则如下:

  • 短查询加速开启,复杂查询受资源池并发控制,简单查询受短查询并发控制。
  • 短查询加速关闭,复杂查询和简单查询均受资源池并发控制,短查询并发控制无效。

内存管理

内存资源,即资源池所占用的内存百分比。

内存管理的目的:防止数据库系统占用内存过高导致内存溢出(OOM)和实现资源池之间的内存隔离和限制。为满足这两个目的,资源管理从以下两方面进行内存管理:

  • 全局内存管理

    为防止数据库系统使用内存过大导致OOM,设置数据库系统全局内存上限(max_process_memory),对数据库全局内存进行管理。全局内存管理包含运行前管理和运行中管理,运行中管理防止实际使用内存超限,运行前管理防止查询执行过程中报错,具体如下:

    • 运行前管理:

      一方面慢车道运行的所有查询估算内存都会进行统计,另一方面数据库系统实际使用内存会进行反馈,当实际使用内存大于统计内存时,对统计内存进行调整。查询运行前,判断全局剩余内存能否满足查询运行,满足情况下查询可以直接运行,否则查询需要排队,等待其他查询释放资源后运行。

    • 运行中管理:

      查询执行过程中实际使用的内存也会进行统计,查询在申请内存时判断内存使用是否超限,内存超限查询报错,已用内存释放。

  • 资源池内存管理

    资源池内存管理属于专属限额的管理方式,即资源池分配多少内存就只能使用多少内存,空闲出来的内存其他资源池不能使用。

    资源池内存分配采用百分比方式,取值范围0~100。0表示资源池不进行内存管理,100表示资源池进行内存管理且可使用全局所有内存。

    所有资源池分配的内存百分比之和不能超过100。资源池内存管理仅管控慢车道查询,且只包含运行前管理,处理逻辑与全局内存运行前管理类似。资源池慢车道查询运行前,进行估算内存统计,当统计内存大于资源池内存时,查询需要排队,等待资源池内其他查询运行结束释放资源后才能运行。

CPU管理

目前支持“共享配额”和“专属限额”两种CPU管理方式:

  • CPU共享配额:在CPU系统繁忙的情况下,不同资源池按照共享配额配置分配CPU资源;在CPU系统空闲的情况下,该配置不生效。
  • CPU专属限额:限制资源池使用的CPU核数上限,无论CPU系统繁忙或者空闲,该资源池上的作业都无法突破该限额配置。

在资源池页面“资源配置”一栏,您可以修改当前资源池的CPU共享配额和专属限额。

共享配额和专属限额的管理方式各有优劣,共享配额的管理方式可以实现CPU资源的充分利用,但是资源池之间隔离不彻底,可能影响查询性能;专属限额的管理方式可以实现CPU资源的绝对隔离,但是在资源池CPU资源空闲时,会造成资源的浪费。

CPU专属限额仅8.1.3及以上集群版本支持。

异常规则

异常规则用于异常查询的识别和快速处理,防止“低质量SQL”长时间占用大量资源,导致其他查询阻塞或性能下降。

在资源池页面“关联异常规则”一栏,可浏览当前资源池中已绑定的异常规则,绑定新异常规则,解绑已有异常规则。目前支持的异常处理规则如表1 异常规则参数所示。

  • 8.2.1及以上集群版本支持降级异常规则,所有异常规则都支持降级行为,降级后仅网络资源抢占降至低优先级,即在正常查询无网络请求时,才会调度降级查询的网络请求。
  • 关联、解绑异常规则仅8.2.0及以上集群版本支持,DWS 3.0版本不支持。8.2.0以下集群版本请参考7.c
表1 异常规则参数

参数项

描述

取值范围(0表示不约束)

操作

阻塞时间

作业的阻塞时间,包括全局并发排队以及局部并发排队的总时间,单位秒。

例如,如果配置“阻塞时间”为300秒,那么当该资源池中的用户执行的某个作业在阻塞300秒后将被终止。

1~2147483647的整数。0表示不约束。

终止、降级或不约束

执行所消耗时间

已经执行的作业从开始执行到当前所消耗的时间,单位为秒。

例如,如果配置“执行所消耗时间”为100秒,那么当该资源池中的用户执行的某个作业在执行超过100秒后将被终止。

1~2147483647的整数。0表示不约束。

终止、降级或不约束

所有DN上CPU总时间

作业在所有DN上执行时所耗费的CPU总时间,单位为秒。

1~2147483647的整数。0表示不约束。

终止、降级或不约束

检查倾斜率的时间间隔

检查作业执行的CPU倾斜率的间隔时间,单位为秒,需同“所有DN上CPU时间的倾斜率”一起设置。

1~2147483647的整数。0表示不约束。

终止、降级或不约束

所有DN上CPU总时间倾斜率

作业在DN上执行时的CPU时间的倾斜率,依赖于“检查倾斜率的时间间隔”的设置。

1~100的整数。0表示不约束。

终止、降级或不约束

单DN算子下盘大小

作业在单个DN上最大下盘的数据量,单位MB。

说明:

该异常规则仅8.2.0及以上集群版本支持。

1~2147483647的整数。0表示不约束。

终止、降级或不约束

DN平均消耗CPU占比

作业在所有DN上执行时的平均CPU使用率,检测周期不强依赖“检查倾斜率的时间间隔”,若配置将使用该检查间隔,否则系统默认30秒间隔。

说明:

该异常规则仅8.2.0及以上集群版本支持。

1~100的整数。0表示不约束

终止、降级或不约束

单个DN上最大带宽

作业在单个DN上最大可占用的网络带宽,单位MB。

说明:

该异常规则仅8.2.1及以上集群版本支持。

1~2147483647的整数。0表示不约束。

终止、降级或不约束