Skip to content

Commit

Permalink
#000 | Add locks monitor query to usefulQueries.sql
Browse files Browse the repository at this point in the history
  • Loading branch information
himeshr committed Nov 28, 2023
1 parent 1a13aeb commit 7aa450f
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions avni-server-api/src/main/resources/database/usefulQueries.sql
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,29 @@ WHERE (now() - pg_stat_activity.query_start) > interval '5 minutes';
-- See what queries are in waiting to acquire locks
SELECT relation::regclass, * FROM pg_locks WHERE NOT GRANTED;

-- Create lock_monitor and use it to find blocking PIDs
CREATE OR REPLACE VIEW lock_monitor AS(
SELECT
COALESCE(blockingl.relation::regclass::text,blockingl.locktype) as locked_item,
now() - blockeda.query_start AS waiting_duration, blockeda.pid AS blocked_pid,
blockeda.query as blocked_query, blockedl.mode as blocked_mode,
blockinga.pid AS blocking_pid, blockinga.query as blocking_query,
blockingl.mode as blocking_mode
FROM pg_catalog.pg_locks blockedl
JOIN pg_stat_activity blockeda ON blockedl.pid = blockeda.pid
JOIN pg_catalog.pg_locks blockingl ON(
( (blockingl.transactionid=blockedl.transactionid) OR
(blockingl.relation=blockedl.relation AND blockingl.locktype=blockedl.locktype)
) AND blockedl.pid != blockingl.pid)
JOIN pg_stat_activity blockinga ON blockingl.pid = blockinga.pid
AND blockinga.datid = blockeda.datid
WHERE NOT blockedl.granted
AND blockinga.datname = current_database()
);

-- To show locks and blocking PIDs
SELECT * from lock_monitor;

-- See number of DB Connections

select max_conn,used,res_for_super,max_conn-used-res_for_super res_for_normal
Expand Down

0 comments on commit 7aa450f

Please sign in to comment.