Greenplum 资源队列(转载)
1、创建资源队列语法
Command: CREATE RESOURCE QUEUE
Description: create a new resource queue for workload management
Syntax:
CREATE RESOURCE QUEUE name WITH (queue_attribute=value [, ... ])
where queue_attribute is:
ACTIVE_STATEMENTS=integer
[ MAX_COST=float [COST_OVERCOMMIT={TRUE|FALSE}] ]
[ MIN_COST=float ]
[ PRIORITY={MIN|LOW|MEDIUM|HIGH|MAX} ]
[ MEMORY_LIMIT='memory_units' ]
参数:
name
资源队列的名字。
ACTIVE_STATEMENTS integer
带有 ACTIVE_STATEMENTS 阀值的资源队列限制了分配到队列角色所能够执行的查询的数量。它(阀值)控制着活跃查询的数量,活跃查询是在同一时间允许运行的查询数量。ACTIVE_STATEMENTS 的值应该是一个大于0的整数值。
MEMORY_LIMIT 'memory_units'
对于所有从该资源队列中提交的语句设置总内存配额。内存单元可以指定为kB, MB或者GB。对于一个资源队列来说最小的内存配额是10MB, 没有最大限值,但是查询执行的上边界由Segment主机的物理内存所限定。默认值时没有限制为(-1)。
MAX_COST float
带有MAX_COST 阀值的资源队列对查询代价设置了一个最大限制。该查询能够被分配到该队列的用户所执行。代价由Greenplum数据库查询优化器(正如查询EXPLAIN 输出显示的)确定的查询的 估计共代价 进行衡量的。 因此,管理员必须要熟悉在系统中执行的典型查询,以对队列设置一个合理的阀值。成本以磁盘页提取为单位进行衡量;1.0 等于顺序读取一个磁盘页。MAX_COST 的值可以被指定为浮点数(例如 100.0) 或者可以被指定为(例如 1e+2)。
COST_OVERCOMMIT boolean
如果基于 MAX_COST限制资源队列,则管理员可以允许 COST_OVERCOMMIT(默认)。这意味着超过允许的成本阈值的查询将被允许运行,但只有在系统空闲时才能运行。如果指定 COST_OVERCOMMIT=FALSE ,超过成本限制的查询将始终被拒绝,从不允许运行。
MIN_COST float
该是最小查询的最小查询成本限制。成本低于此限制的查询将不会排队等待立即运行。成本由Greenplum数据库查询优化器(正如查询 EXPLAIN 输出所示)确定的查询的估计总成本所衡量。 因此,管理员必须熟悉通常在系统上执行的查询,以便为被认为是小型查询设置适当的成本。 成本是以磁盘页提取为单位来衡量的; 1.0等于一个顺序的磁盘页面读取。MIN_COST 的值可以被指定为浮点数(例如 100.0)或也可以被指定为一个指数(例如 1e+2)。
PRIORITY={MIN|LOW|MEDIUM|HIGH|MAX}
设置和资源队列相关查询的优先级。队里中拥有高优先级的查询和语句会在竞争中拥有更大的可用CPU资源份额。队列中拥有低优先级的查询将会被推迟,同时,更高优先级的查询将会被执行。如果没有指定优先级,和队列相关的查询的优先级为 MEDIUM。
注意:
1、官方建议使用MEMORY_LIMIT 和ACTIVE_STATEMENTS 来替代max_cost
2、如果队列中未设置MEMORY_LIMIT,则每个查询可用的内存值为系统参数statement_mem的值,最大可用内存为statement_mem /ACTIVE_STATEMENTS
3、并不是所有语句都受资源队列限制,默认情况下,只有SELECT, SELECT INTO, CREATE TABLE AS SELECT, 和DECLARE CURSOR受限,如果配置参数resource_select_only = off,则INSERT, UPDATE,DELETE语句也会受限
4、如果没有设置max_cost,那么每个语句使用的内存是MEMORY_LIMIT/ACTIVE_STATEMENTS,如果设置了max_cost,内存是MEMORY_LIMIT*(query_cost/max_cost),query_cost为实际SQL的cost
2、创建资源队列
create resource queue prod_queue with (ACTIVE_STATEMENTS=100,MEMORY_LIMIT='12800MB',priority=high);
create resource queue q_hank with (ACTIVE_STATEMENTS=10,MEMORY_LIMIT='200MB',PRIORITY=HIGH,COST_OVERCOMMIT=true,MIN_COST=100,MAX_COST=1000000);
3、修改变更资源队列
a) 使用ALTER RESOURCE QUEUE命令来改变资源队列的限制
=# ALTER RESOURCE QUEUE q_hank WITH (ACTIVE_STATEMENTS=3);
=# ALTER RESOURCE QUEUE q_hank WITH (MAX_COST=100000.0);
b) 将活动语句数量或者内存限制重置为无限制,可以使用-1值。
=# ALTER RESOURCE QUEUE q_hank WITH (MAX_COST=-1.0, MEMORY_LIMIT=‘2GB’);
c) 改变查询优先级
=# ALTER RESOURCE QUEUE q_hank WITH (PRIORITY=MIN);
4、删除资源队列
要删除一个资源队列,该队列不能与任何ROLE相关。
使用DROP RESOURCE QUEUE命令删除资源队列。
=# DROP RESOURCE QUEUE q_hank;
5、添加用户到资源队列中
a) 赋予role资源管理队列
alter role hank resource queue q_hank;
b) 恢复到使用默认的资源队列
ALTER ROLE hank RESOURCE QUEUE none;
6、资源队列的相关查询语句
a) 通过以下视图可以查看到参数内容
postgres=# select * from pg_resqueue_attributes;
rsqname | resname | ressetting | restypid
------------+---------------------------------+------------+----------
pg_default | active_statements | 20 | 1
pg_default | max_cost | -1 | 2
pg_default | min_cost | 0 | 3
pg_default | cost_overcommit | 0 | 4
pg_default | priority | medium | 5
pg_default | memory_limit | -1 | 6
b) 查看资源队列相关使用情况:
SELECT * FROM gp_toolkit.gp_resqueue_status;
c) 查看资源队列统计信息:
SELECT * FROM pg_stat_resqueues;
d) 查询角色分配的资源队列:
SELECT * from gp_toolkit.gp_resq_role;
e) 查询资源队列中的等待查询:
SELECT * FROM gp_toolkit.gp_locks_on_resqueue WHERE lorwaiting='true';
f) 查询活动语句的优先级
select * from gp_toolkit.gp_resq_priority_statement;
g) 清理资源队列中等待的查询:
SELECT rolname, rsqname, pid, granted,current_query, datname
FROM pg_roles, gp_toolkit.gp_resqueue_status, pg_locks,pg_stat_activity
WHERE pg_roles.rolresqueue=pg_locks.objid
AND pg_locks.objid=gp_toolkit.gp_resqueue_status.queueid
AND pg_stat_activity.procpid=pg_locks.pid
AND pg_stat_activity.usename=pg_roles.rolname;
转载自:https://www.cnblogs.com/pl-boke/p/9852439.html
Greenplum 资源队列(转载)的更多相关文章
- greenplum资源队列
1.创建资源队列语法 Command: CREATE RESOURCE QUEUEDescription: create a new resource queue for workload m ...
- [转]Greenplum 资源隔离的原理与源码分析
摘要: 背景 Greenplum是一个MPP的数据仓库系统,最大的优点是水平扩展,并且一个QUERY就能将硬件资源的能力发挥到极致. 但这也是被一些用户诟病的一点,因为一个的QUERY就可能占光所有的 ...
- ASP.NET Web Api 使用CacheCow和ETag缓存资源(转载)
转载地址:http://www.cnblogs.com/fzrain/p/3618887.html 前言 本文将使用一个开源框架CacheCow来实现针对Http请求资源缓存,本文主要介绍服务器端的缓 ...
- Java并发编程:阻塞队列(转载)
Java并发编程:阻塞队列 在前面几篇文章中,我们讨论了同步容器(Hashtable.Vector),也讨论了并发容器(ConcurrentHashMap.CopyOnWriteArrayList), ...
- 170多个Ionic Framework学习资源(转载)
在Ionic官网找到的学习资源:http://blog.ionic.io/learning-ionic-in-your-living-room/ 网上的文章比较多,但是很多时候我们很难找到自己需要的. ...
- 学好 Python 的 11 个优秀资源【转载】
Python是目前最流行.最易学最强大的编程语言之一(学习Python的五大理由),无论你是新手还是老鸟,无论是用于机器学习还是web开发(Pinterest就是案例),Python都是一件利器.此外 ...
- 【NS2】常用资源(转载)
(一). NS常用基本网站 1. 寻求问题答案最好的地方. http://mailman.isi.edu/pipermail/ns-users/ 2. 柯老师的网站,包含很多非常实用资源:安装, ...
- Greenplum常用的gp_toolkit & pg_catalog监控语句
gp_toolkit 说明 Greenplum数据库提供了一个名为gp_tooikit的管理schema,该schema下有关于查询系统目录,日志文件, 用户创建(databases,schema,t ...
- 【转载】 Spark性能优化:资源调优篇
在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置 ...
随机推荐
- Python与MogoDB交互
睡了大半天,终于有时间整理下拖欠的MongoDB的封装啦. 首先我们先进行下数据库的连接: conn = MongoClient('localhost',27017) # 建立连接 result = ...
- C#下IOC/依赖注入框架Grace介绍
对依赖注入或控制反转不了解的童鞋请先自行学习一下这一设计,这里直接介绍项目和实现步骤. Grace是一个开源.轻巧.易用同时特性丰富.性能优秀的依赖注入容器框架.从这篇IOC容器评测文章找到的Grac ...
- js的splice和delete
例如有一个数组是 :var textArr = ['a','b','c','d']; 这时我想删除这个数组中的b元素: 方法一:delete 删除数组 delete textArr[1] 结果为: ...
- C# vb .net实现邮戳效果滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的邮戳效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...
- webpack 打包器
创建目录mkdir demo && cd demo 产生package.json执行 npm init -y 先全局安装webpack和webpack-clinpm install w ...
- python 2.django的镜像安装与第一次项目创建-运行以及app创建
django的设计模式 Django是一个遵循MVC设计模式的框架,MVC是Model.View.Controller的三个单词的简写.分别代表模型.视图.控制器. 而Django也是是一个MTV的设 ...
- 【转载】C#中int.TryParse方法和int.Parse方法的异同之处
在C#编程过程中,int.TryParse方法和int.Parse方法都可以将字符串string转换为整型int类型,但两者还是有区别,最重要的区别在于int.TryParse方法在字符串无法转换为i ...
- CentOS - Eclipse安装Shelled
一,下载Shelled: https://sourceforge.net/projects/shelled/ 二,打开Eclipse,以离线方式安装: Help->Install New Sof ...
- 工厂交接班易出问题?MES系统实现精准对接
工厂交接班制度非常的严格和复杂,而MES系统能让繁琐的交接班流程简单快捷无措.MES系统在发生事件时记录传递事件,还可以主动对事件进行分类和报告.人员可以查看和深入到以前或当前班次的个别事件. 随着工 ...
- Java 格式化日期、时间
有三种方法可以格式化日期.时间. 1.使用DateFormat类 获取DateFormat实例: DateFormat.getDateInstance() 只能格式化日期 2019年5 ...