Useful Queries
* To see which postgres transactions are blocked on which postgres transactions:
select distinct a.procpid as procpid1, a.current_query as current_query1, 'is waiting on' as "is waiting on", d.procpid, d.current_query from pg_stat_activity a join pg_locks b on (a.procpid = b.pid) join pg_locks c on (b.relation = c.relation) join pg_stat_activity d on (c.pid = d.procpid) where a.waiting = 't' and b.granted = 'f' and c.granted = 't';
* To list which db tables are using TOAST tables, and how many of them:
SELECT
c.nspname, a.relname AS tablename, a.reltoastrelid::regclass AS toastname, b.relpages as usedpages
FROM pg_class a
JOIN pg_class b
ON (a.reltoastrelid = b.oid)
JOIN pg_namespace c
ON (a.relnamespace = c.oid)
WHERE a.reltoastrelid != 0
ORDER BY b.relpages DESC;* To query the db to find out if a specific db table is using TOAST tables:
SELECT
c.nspname, a.relname AS tablename, a.reltoastrelid::regclass AS toastname, b.relpages as usedpages
FROM pg_class a
JOIN pg_class b
ON (a.reltoastrelid = b.oid)
JOIN pg_namespace c
ON (a.relnamespace = c.oid)
WHERE a.reltoastrelid != 0
AND c.nspname || '.' || a.relname = '<your schemaname.tablename here>'
ORDER BY b.relpages DESC;