功能介绍 本章节主要介绍工作负载队列功能。 功能介绍 DWS工作负载队列的具体功能包括:并发管理、内存管理、CPU管理以及异常规则。 并发管理 并发,即资源池中的最大查询并发数。并发管理作为运行前管理,用于限制查询并发运行的数量,通过限制查询并发数降低资源争抢,保证资源的有序高效利用。 在资源池页面“短查询配置”一栏,您可以通过开关键决定是否开启短查询加速功能。如果需要对简单语句并发数(默认值为1,0 或1表示不控制)进行修改,可选择打开短查询加速。 并发管理规则如下: 短查询加速开启,复杂查询受工作负载队列并发控制,简单查询受短查询并发控制。 短查询加速关闭,复杂查询和简单查询均受工作负载队列并发控制,短查询并发控制无效。 内存管理 内存资源,即工作负载队列所占用的内存百分比。 内存管理的目的:防止数据库系统占用内存过高导致内存溢出(OOM)和实现资源池之间的内存隔离和限制。为满足这两个目的,工作负载管理从以下两方面进行内存管理: 全局内存管理 为防止数据库系统使用内存过大导致OOM,设置数据库系统全局内存上限(maxprocessmemory),对数据库全局内存进行管理。全局内存管理包含运行前管理和运行中管理,运行中管理防止实际使用内存超限,运行前管理防止查询执行过程中报错,具体如下: −运行前管理: 一方面慢车道运行的所有查询估算内存都会进行统计,另一方面数据库系统实际使用内存会进行反馈,当实际使用内存大于统计内存时,对统计内存进行调整。查询运行前,判断全局剩余内存能否满足查询运行,满足情况下查询可以直接运行,否则查询需要排队,等待其他查询释放资源后运行。 −运行中管理: 查询执行过程中实际使用的内存也会进行统计,查询在申请内存时判断内存使用是否超限,内存超限查询报错,已用内存释放。 资源池内存管理 资源池内存管理属于专属限额的管理方式,即资源池分配多少内存就只能使用多少内存,空闲出来的内存其他资源池不能使用。 资源池内存分配采用百分比方式,取值范围0~100。0表示资源池不进行内存管理,100表示资源池进行内存管理且可使用全局所有内存。 所有资源池分配的内存百分比之和不能超过100。资源池内存管理仅管控慢车道查询,且只包含运行前管理,处理逻辑与全局内存运行前管理类似。资源池慢车道查询运行前,进行估算内存统计,当统计内存大于资源池内存时,查询需要排队,等待资源池内其他查询运行结束释放资源后才能运行。