在Greenplum中,每個(gè)用戶都會(huì)對(duì)應(yīng)到資源隊(duì)列中,資源隊(duì)列張很多場(chǎng)景有很好應(yīng)用,例如,很多人共用數(shù)據(jù)庫(kù),需要對(duì)不同的人開發(fā)不通的隊(duì)列,控制資源,默認(rèn)不指定則對(duì)應(yīng)到pg_default資源隊(duì)列
對(duì)添加進(jìn)來(lái)的sql,并不是所有的都會(huì)被資源隊(duì)列所限制,默認(rèn)情況就:
select、select into、create table name as select、declare cursor會(huì)被限制在資源隊(duì)列中,如果設(shè)置參數(shù)resource_select_only = off(在postgresql.conf文件),那么insert、update、delete 也是會(huì)被限制在資源隊(duì)列中
創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、曲陽(yáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為曲陽(yáng)等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
testdb=# select from pg_resqueue_attributes;
active_statements:同時(shí)可執(zhí)行的sql個(gè)數(shù)
max_cost:每條sql最大消耗的cost數(shù)量,也就是explain查看的時(shí)候可以看到的cost
min_cost:最少cost數(shù)量,如果sql需要的cost小與這個(gè),無(wú)論什么情況都會(huì)馬上執(zhí)行
cost_over_commit:true時(shí),在資源隊(duì)列沒(méi)有其他sql運(yùn)行時(shí),超過(guò)max_cost的sql也會(huì)被執(zhí)行,false時(shí),只要超過(guò)了max_cost就直接報(bào)錯(cuò)
priority:CPU優(yōu)先級(jí),分為min|low|medium|high|max
memory_limit:分兩種情況,一種是只設(shè)置了memory_limit和active_queue,那么每個(gè)sql最大占用內(nèi)存為: memory_limit / active_queue;另外一種情況是設(shè)置了max_cost,那么每個(gè)sql最大占用內(nèi)存為:memory_limit (sql_cost / max_cost) sql_cost表示當(dāng)前sql所需要的cost
testdb=# SELECT * FROM pg_stat_activity;
testdb=# SELECT * FROM gp_toolkit.gp_locks_on_resqueue WHERE lorwaiting='true';
testdb=# SELECT rolname, rsqname FROM pg_roles, gp_toolkit.gp_resqueue_status WHERE pg_roles.rolresqueue=gp_toolkit.gp_resqueue_status.queueid;
testdb=# select * from gp_toolkit.gp_resq_priority_statement ;
testdb=# create resource queue myqueue with (priority=low, memory_limit=1024000, active_statements=10);
testdb=# alter resource queue myqueue with (memory_limit=1000000);