ALTER RESOURCE QUEUE
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
描述
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资源份额。 低优先级队列中的查询可能会被延迟,同时执行更高优先级的查询
注意
GPORCA和Greenplum数据库原生优化器利用不同的查询耗费模型,所以同样的查询可能会 计算出不同的消耗值。Greenplum数据库资源队列资源管理模型既不区分也不调整GPORCA和 Postgres优化器的成本,它会直接使用优化器返回的消耗值来限制查询。
当基于资源队列的资源管理处于活动状态时,请使用资源队列的 MEMORY_LIMIT和 ACTIVE_STATEMENTS限制,而不是配置基于成本的限制。 即使在使用GPORCA时,Greenplum数据库可能会回到使用postgres规划器进行某些查询,因此使用基于成本的 限制可能会导致意外的结果。
示例
更改资源队列的活动查询限制:
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);
将资源队列的查询代价限制重置为 310 (或者是 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 语句是 Greenplum数据库的扩展,在标准PostgreSQL中不存在这个命令。