SQL to display information about Resource queues in Greenplum

 -- Resource Queues in your database

select pg_resqueue.oid, rsqname from pg_catalog.pg_resqueue;

 

 -- Resource Queue Parameter Settings

select * from pg_catalog.pg_resqueue_attributes;

 

-- Viewing the Roles Assigned to a Resource Queue

SELECT rolname, rsqname FROM pg_roles, gp_toolkit.gp_resqueue_status

WHERE pg_roles.rolresqueue=gp_toolkit.gp_resqueue_status.queueid

order by rsqname;

 

 -- Viewing the Waiting Queries for a Resource Queue

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

 

 -- Clearing a Waiting Statement From a Resource Queue

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;

\qecho -- execute pg_cancel_backend(pid) to clear the statement from RQ.

\qecho

\qecho -- Resetting the Priority of an Active Statement Superusers can adjust the priority of a statement currently being executed using the

\qecho -- built-in function gp_adjust_priority(session_id, statement_count, priority). Using this function, superusers can raise or lower

\qecho -- the priority of any\qecho -- query. For example:=# SELECT gp_adjust_priority(752, 24905, 'HIGH')

\qecho -- To obtain the session ID and statement count parameters required by this function, Superusers can use the gp_toolkit administrative schema view,

\qecho -- gp_resq_priority_statement. This function affects only the specified statement . Subsequent statements in the same resource queue

\qecho -- are executed using the queue’s normally assigned priority.

 

 -- Resource Queue Current Activities

SELECT q.oid AS queueid, q.rsqname AS queuename, pg_stat_get_queue_num_exec(q.oid) AS n_queries_exec,

pg_stat_get_queue_num_wait(q.oid) AS n_queries_wait, pg_stat_get_queue_elapsed_exec(q.oid) AS elapsed_exec,

pg_stat_get_queue_elapsed_wait(q.oid) AS elapsed_wait FROM pg_resqueue q;

 

-- Resource Queue waiters and holders

SELECT

q.oid AS queueid,

q.rsqname, t1.value::integer AS rsqcountlimit,

t2.value::integer AS rsqcountvalue,

t3.value::real AS rsqcostlimit,

t4.value::real AS rsqcostvalue,

t5.value::real AS rsqmemorylimit,

t6.value::real AS rsqmemoryvalue,

t7.value::integer AS rsqwaiters,

t8.value::integer AS rsqholders

FROM pg_resqueue q,

pg_resqueue_status_kv() t1(queueid oid, key text, value text),

pg_resqueue_status_kv() t2(queueid oid, key text, value text),

pg_resqueue_status_kv() t3(queueid oid, key text, value text),

pg_resqueue_status_kv() t4(queueid oid, key text, value text),

pg_resqueue_status_kv() t5(queueid oid, key text, value text),

pg_resqueue_status_kv() t6(queueid oid, key text, value text),

pg_resqueue_status_kv() t7(queueid oid, key text, value text),

pg_resqueue_status_kv() t8(queueid oid, key text, value text)

WHERE q.oid = t1.queueid

AND t1.queueid = t2.queueid

AND t2.queueid = t3.queueid

AND t3.queueid = t4.queueid

AND t4.queueid = t5.queueid

AND t5.queueid = t6.queueid

AND t6.queueid = t7.queueid

AND t7.queueid = t8.queueid

AND t1.key = 'rsqcountlimit'::text

AND t2.key = 'rsqcountvalue'::text

AND t3.key = 'rsqcostlimit'::text

AND t4.key = 'rsqcostvalue'::text

AND t5.key = 'rsqmemorylimit'::text

AND t6.key = 'rsqmemoryvalue'::text

AND t7.key = 'rsqwaiters'::text

AND t8.key = 'rsqholders'::text;