您好,登錄后才能下訂單哦!
在Greenplum中,每個用戶都會對應到資源隊列中,資源隊列張很多場景有很好應用,例如,很多人共用數據庫,需要對不同的人開發不通的隊列,控制資源,默認不指定則對應到pg_default資源隊列
對添加進來的sql,并不是所有的都會被資源隊列所限制,默認情況就:
select、select into、create table name as select、declare cursor會被限制在資源隊列中,如果設置參數resource_select_only = off(在postgresql.conf文件),那么insert、update、delete 也是會被限制在資源隊列中
testdb=# select from pg_resqueue_attributes;
active_statements:同時可執行的sql個數
max_cost:每條sql最大消耗的cost數量,也就是explain查看的時候可以看到的cost
min_cost:最少cost數量,如果sql需要的cost小與這個,無論什么情況都會馬上執行
cost_over_commit:true時,在資源隊列沒有其他sql運行時,超過max_cost的sql也會被執行,false時,只要超過了max_cost就直接報錯
priority:CPU優先級,分為min|low|medium|high|max
memory_limit:分兩種情況,一種是只設置了memory_limit和active_queue,那么每個sql最大占用內存為: memory_limit / active_queue;另外一種情況是設置了max_cost,那么每個sql最大占用內存為:memory_limit (sql_cost / max_cost) sql_cost表示當前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);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。