CREATE RESOURCE QUEUE
CREATE RESOURCE QUEUE#
CREATE RESOURCE QUEUE
CREATE RESOURCE QUEUE — 定义一个新的资源队列
大纲
CREATE RESOURCE QUEUE <name> WITH (ACTIVE_STATEMENTS=<integer>, MEMORY_LIMIT='<memory_units>', [<queue_attribute>=<value> [, ... ]])
其中 queue_attribute 可以是:
MIN_COST=<float>
描述
CREATE RESOURCE QUEUE
向 OushuDB 数据库创建新的资源队列。资源队列必须具有 ACTIVE_STATEMENTS 和 MEMORY_LIMIT 值。只有超级用户可以创建资源队列。
资源队列都附属于虚拟集群。
具有 ACTIVE_STATEMENTS 阈值的资源队列设置了分配给该队列的角色可以运行的查询数量的最大限制。它控制允许同时运行的活动查询数量。ACTIVE_STATEMENTS 的值应为大于 0 的整数。
具有可选 MEMORY_LIMIT 阈值的资源队列设置了通过资源队列提交的所有查询在段主机上可以消耗的内存量的最大限制。这决定了查询执行期间查询的所有工作进程在段主机上可以消耗的总内存量。
队列中每个查询分配的默认内存量为:MEMORY_LIMIT / ACTIVE_STATEMENTS。
可以使用 statement_mem 服务器配置参数按每个查询覆盖默认内存分配,前提是未超过 MEMORY_LIMIT 或 max_statement_mem。
所有资源队列的 MEMORY_LIMIT 值不应超过段主机的物理内存量。如果工作负载在多个队列上并发执行,则内存分配可能会超额申请。但是,如果超出 gp_vmem_protect_limit 中指定的段主机内存限制,则可以在执行期间取消查询。
有关 statement_mem、max_statement 和 gp_vmem_protect_limit 的信息,请参阅 资源管理配置。
参数
name
新资源队列的名称。由 <vcname>.<queuename> 组成,其中 vcname 为虚拟集群名称,queuename 为队列子名称。
ACTIVE_STATEMENTS
系统允许此资源队列中用户同时提交的活动语句数。ACTIVE_STATEMENTS 的值应为大于 0 的整数。要将 ACTIVE_STATEMENTS 重置为无限制,请输入值 -1。
MEMORY_LIMIT
设置此资源队列中用户提交的所有语句的总内存配额。内存单位可以是 KB、MB 或 GB。资源队列的最小内存配额为 10MB。没有最大值;但是查询执行时的上限受段主机的物理内存限制。
MIN_COST
被视为小查询的最小查询成本限制。成本低于此限制的查询将不会排队并立即运行。成本以查询规划器确定的查询估计总成本来衡量(如查询的 EXPLAIN 输出中所示)。因此,管理员必须熟悉系统上通常运行的查询,以便为被视为小查询的查询设置适当的成本。
例子
创建一个资源队列,其活动查询限制为 20 个,总内存限制为 2000MB(每个查询在执行时将分配 100MB 的段主机内存):
CREATE RESOURCE QUEUE myvc.myqueue WITH (ACTIVE_STATEMENTS=20, MEMORY_LIMIT='2000MB');
兼容性
CREATE RESOURCE QUEUE
是 OushuDB 数据库扩展。SQL 标准中没有关于资源队列或资源管理的规定。