暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

greenplum 资源队列

1. 资源队列的基本原理


    资源队列存在的目的是为了防止多个会话同时执行,争夺系统资源和避免造成资源耗尽,如 Memory、CPU、磁盘 I/O 这三种资源。


在 gp 中可以将多个 role 放在一个资源队列内,然后对这个资源队列进行限制,可以指定共享 cpu 资源的优先级


(关于优先级在资源队列中的效果似乎并不明显,在后续版本中增加的资源组才会有明显的效果)。



2. 资源队列的工作原理


    资源队列在 gp 中是默认打开的,每一个新建的的 role 都会且是必须分配一个资源队列。如果在创建 role 时没有指定,


将会默认分配到 pg_default 这个数据库自带的资源队列中。



目前资源队列可以限制的参数


    1. 活动语句数量。就是指一个资源队列最多可以同时执行多少个会话。


    2. 活动语句内存使用量。一个资源队列下所有的 role 提交的语句所使用的内存资源总和不能超过这个值。


    3. 活动语句优先级。该值规定了资源队列之间使用 cpu 的优先级。但是这个优先级是相对的。


    4. 活动语句的成本。该值是由查询规划器做的成本评估。



    在数据库运行时,用户提交一个查询,这个查询就会被所在的资源队列的限制进行评估。如果评估认为该查询所消耗的资源


不会超过限制,该查询就会立即执行。如果评估认为该查询超过了资源限制,该查询需要等到有足够的资源时才能得到执行。


查询的方式是先进先出的原则进行排队。在查询优先级启用的情况下,系统会定期的重新分配计算资源。另外,SUPERUSER 是不受资源队列限制的。


会立即执行,无视所在资源队列的限制。



3. 与资源队列的相关语法


创建资源队列语法


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


参数:


name: 资源队列的名字。


ACTIVE_STATEMENTS integer: 该参数限制了分配到队列角色所能够执行的查询的数量。


MEMORY_LIMIT 'memory_units': 对于所有从该资源队列中提交的语句设置总内存配额。


MAX_COST float: 对查询代价设置了一个最大限制。


MIN_COST float: 该是最小查询的最小查询成本限制。


PRIORITY={MIN|LOW|MEDIUM|HIGH|MAX}: 设置和资源队列相关查询的优先级.



修改变更资源队列


使用 ALTER RESOURCE QUEUE 命令来改变资源队列的限制


ALTER RESOURCE QUEUE zy WITH (ACTIVE_STATEMENTS=3);


ALTER RESOURCE QUEUE zy WITH (MAX_COST=100000.0);



将活动语句数量或者内存限制重置为无限制,可以使用 - 1 值。


ALTER RESOURCE QUEUE zy WITH (MAX_COST=-1.0, MEMORY_LIMIT=‘2GB’);



改变查询优先级


ALTER RESOURCE QUEUE zy WITH (PRIORITY=MIN);



删除资源队列


要删除一个资源队列,该队列不能与任何 ROLE 相关, 使用 DROP RESOURCE QUEUE 命令删除资源队列。


DROP RESOURCE QUEUE zy;



添加用户到资源队列中


赋予 role 资源管理队列


alter role hank resource queue zy;



恢复到使用默认的资源队列


ALTER ROLE hank RESOURCE QUEUE none;



资源队列的相关查询语句


通过以下视图可以查看到参数内容


select * from pg_resqueue_attributes;



查看资源队列相关使用情况:


SELECT * FROM gp_toolkit.gp_resqueue_status;



查看资源队列统计信息:


SELECT * FROM pg_stat_resqueues;



查询角色分配的资源队列:


SELECT * from gp_toolkit.gp_resq_role;



查询资源队列中的等待查询:


SELECT * FROM gp_toolkit.gp_locks_on_resqueue WHERE lorwaiting='true';



查询活动语句的优先级


select * from gp_toolkit.gp_resq_priority_statement;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论