ALTER RESOURCE QUEUE

更改资源队列的限制。

概要

ALTER RESOURCE QUEUE name WITH ( queue_attribute=value [, ... ] ) 

其中 queue_attribute 是:

   ACTIVE_STATEMENTS=integer
   MEMORY_LIMIT='memory_units'
   MAX_COST=float
   COST_OVERCOMMIT={TRUE|FALSE}
   MIN_COST=float
   PRIORITY={MIN|LOW|MEDIUM|HIGH|MAX}
ALTER RESOURCE QUEUE name WITHOUT ( queue_attribute [, ... ] )

其中 queue_attribute 是:

   ACTIVE_STATEMENTS
   MEMORY_LIMIT
   MAX_COST
   COST_OVERCOMMIT
   MIN_COST

注意:一个资源队列必须拥有 ACTIVE_STATEMENTS 或 MAX_COST 其中的一个值。不能将两者都从资源队列的 queue_attributes 中删除。

描述

ALTER RESOURCE QUEUE 更改一个资源队列的限制,只有超级用户才能更改资源队列。 一个资源队列必须拥有 ACTIVE_STATEMENTS 或者 MAX_COST 值 (或者两者都有)。 用户可以设置或者重置一个资源队列的优先级来控制与资源队列相关的查询所使用的 CPU 可用资源, 或者设置资源队列的内存限制来控制资源队列中所有提交的查询在一个 Segment 主机上可以使用的内存总量。

ALTER RESOURCE QUEUE WITHOUT 删除之前在资源上指定的限制。一个资源队列必须拥有 ACTIVE_STATEMENTS 或者 MAX_COST 其中一个值。不能两者都从资源队列的 queue_attributes 中删除。

参数

name

  • 要更改其限制的资源队列的名称。

ACTIVE_STATEMENTS integer

  • 任何时刻系统中允许在该资源队列中的用户提交的活动语句的数量。 ACTIVE_STATEMENTS 的值应该是一个大于 0 的整数。要把 ACTIVE_STATEMENTS 重置为没有限制,则指定值为 -1。

MEMORY_LIMIT 'memory_units'

  • 设置从此资源队列中的用户提交的所有语句的总内存配额。 内存单位可以指定为 kB,MB 或 GB。资源队列的最小内存配额为 10MB。没有最大值; 然而,查询执行时间的上边界受到 Segment 主机的物理内存的限制。默认值为无限制 (-1)。

MAX_COST float

  • 任何时刻系统中允许在该资源队列中的用户提交的语句的查询优化器总代价。MAX_COST 的值被指定为一个浮点数(例如 100.00)或者还可以被指定为一个指数(例如 1e+2)。要把 MAX_COST 重置为没有限制,输入一个值 -1.0。

COST_OVERCOMMIT boolean

  • 如果资源队列受到基于查询代价的限制,那么管理员可以允许代价过量使用(默认 COST_OVERCOMMIT = TRUE)。这意味着一个超过允许的代价阈值的查询将被允许运行, 但只能在系统空闲时运行。如果指定COST_OVERCOMMIT = FALSE,超过代价限制的查询将总是被拒绝并且绝不会被允许运行。

MIN_COST float

  • 代价低于此限制的查询将不会排队而是立即运行。代价是以取得的磁盘页为单位来衡量的。1.0 等于一次顺序磁盘页面读取。MIN_COST 的值被指定为浮点数(例如 100.00)或者还能被指定为一个指数(例如 1e+2)。要把 MIN_COST 重置为没有限制,输入一个值 -1.0。

PRIORITY={MIN|LOW|MEDIUM|HIGH|MAX}

  • 设置与资源队列关联的查询的优先级。具有较高优先级的队列中的查询或语句将在竞争中获得更多的可用 CPU 资源份额。低优先级队列中的查询可能会被延迟,同时执行更高优先级的查询

示例

更改资源队列的活动查询限制:

ALTER RESOURCE QUEUE myqueue WITH (ACTIVE_STATEMENTS=20);

更改资源队列的内存限制:

ALTER RESOURCE QUEUE myqueue WITH (MEMORY_LIMIT='2GB');

将资源队列的最大和最小查询代价限制重置为无限制:

ALTER RESOURCE QUEUE myqueue WITH (MAX_COST=-1.0, 
  MIN_COST= -1.0);

将资源队列的查询代价限制重置为 3^10 (或者是 30000000000.0) 不允许过量使用:

ALTER RESOURCE QUEUE myqueue WITH (MAX_COST=3e+10, 
  COST_OVERCOMMIT=FALSE);

将与资源队列关联的查询的优先级重置为最小级别:

ALTER RESOURCE QUEUE myqueue WITH (PRIORITY=MIN);

从资源队列中去除 MAX_COST 和 MEMORY_LIMIT 限制:

ALTER RESOURCE QUEUE myqueue WITHOUT (MAX_COST, MEMORY_LIMIT);

兼容性

ALTER RESOURCE QUEUE 语句是 YMatrix 数据库的扩展,在标准 PostgreSQL 中不存在这个命令。

另见

CREATE RESOURCE QUEUEDROP RESOURCE QUEUE