\set size 'SELECT rel_name, pg_size_pretty(rel_size) AS rel_size, pg_size_pretty(indexes_size) AS indexes_size, pg_size_pretty(total_size) AS total_size, rel_kind FROM (SELECT rel_name, rel_kind, pg_table_size(rel_name) AS rel_size, pg_indexes_size(rel_name) AS indexes_size, pg_total_relation_size(rel_name) AS total_size FROM (SELECT (\'"\' || table_schema || \'"."\' || table_name || \'"\') AS rel_name, \'table\' AS rel_kind FROM information_schema.tables WHERE table_schema NOT IN (\'information_schema\', \'pg_catalog\') UNION SELECT (\'"\' || schemaname || \'"."\' || matviewname || \'"\'), \'matview\' FROM pg_matviews) AS all_tables ORDER BY total_size DESC) AS pretty_sizes ORDER BY pg_total_relation_size(rel_name) DESC;'
\set bloat 'SELECT tablename as table_name, ROUND(CASE WHEN otta=0 THEN 0.0 ELSE sml.relpages/otta::numeric END,1) AS table_bloat, CASE WHEN relpages < otta THEN ''0'' ELSE pg_size_pretty((bs*(sml.relpages-otta)::bigint)::bigint) END AS table_waste, iname as index_name, ROUND(CASE WHEN iotta=0 OR ipages=0 THEN 0.0 ELSE ipages/iotta::numeric END,1) AS index_bloat, CASE WHEN ipages < iotta THEN ''0'' ELSE pg_size_pretty((bs*(ipages-iotta))::bigint) END AS index_waste FROM ( SELECT schemaname, tablename, cc.reltuples, cc.relpages, bs, CEIL((cc.reltuples*((datahdr+ma- (CASE WHEN datahdr%ma=0 THEN ma ELSE datahdr%ma END))+nullhdr2+4))/(bs-20::float)) AS otta, COALESCE(c2.relname,''?'') AS iname, COALESCE(c2.reltuples,0) AS ituples, COALESCE(c2.relpages,0) AS ipages, COALESCE(CEIL((c2.reltuples*(datahdr-12))/(bs-20::float)),0) AS iotta FROM ( SELECT ma,bs,schemaname,tablename, (datawidth+(hdr+ma-(case when hdr%ma=0 THEN ma ELSE hdr%ma END)))::numeric AS datahdr, (maxfracsum*(nullhdr+ma-(case when nullhdr%ma=0 THEN ma ELSE nullhdr%ma END))) AS nullhdr2 FROM ( SELECT schemaname, tablename, hdr, ma, bs, SUM((1-null_frac)*avg_width) AS datawidth, MAX(null_frac) AS maxfracsum, hdr+( SELECT 1+count(*)/8 FROM pg_stats s2 WHERE null_frac<>0 AND s2.schemaname = s.schemaname AND s2.tablename = s.tablename) AS nullhdr FROM pg_stats s, ( SELECT (SELECT current_setting(''block_size'')::numeric) AS bs, CASE WHEN substring(v,12,3) IN (''8.0'',''8.1'',''8.2'') THEN 27 ELSE 23 END AS hdr, CASE WHEN v ~ ''mingw32'' THEN 8 ELSE 4 END AS ma FROM (SELECT version() AS v) AS foo) AS constants GROUP BY 1,2,3,4,5) AS foo) AS rs JOIN pg_class cc ON cc.relname = rs.tablename JOIN pg_namespace nn ON cc.relnamespace = nn.oid AND nn.nspname = rs.schemaname AND nn.nspname <> ''information_schema'' LEFT JOIN pg_index i ON indrelid = cc.oid LEFT JOIN pg_class c2 ON c2.oid = i.indexrelid) AS sml ORDER BY CASE WHEN relpages < otta THEN 0 ELSE bs*(sml.relpages-otta)::bigint END DESC;'
\set owners 'SELECT DISTINCT t.table_name, t.table_type, c.relowner, u.usename FROM information_schema.tables t JOIN pg_catalog.pg_class c ON (t.table_name = c.relname) JOIN pg_catalog.pg_user u ON (c.relowner = u.usesysid) WHERE t.table_schema NOT IN (\'information_schema\', \'pg_catalog\') ORDER BY t.table_name;'
\set last_vacuum 'select pg_class.relname, pg_namespace.nspname, pg_size_pretty(pg_relation_size(pg_class.oid)) as relsize, pg_size_pretty(pg_total_relation_size(pg_class.oid)) as totalsize, case when coalesce(last_vacuum,''1/1/1000'') > coalesce(last_autovacuum,''1/1/1000'') then pg_stat_all_tables.last_vacuum else last_autovacuum end as last_vacuumed, case when coalesce(last_analyze,''1/1/1000'') > coalesce(last_autoanalyze,''1/1/1000'') then pg_stat_all_tables.last_analyze else last_autoanalyze end as last_analyzed from pg_class join pg_namespace on pg_class.relnamespace = pg_namespace.oid join pg_stat_all_tables on (pg_class.relname = pg_stat_all_tables.relname and pg_namespace.nspname = pg_stat_all_tables.schemaname) where pg_namespace.nspname not in (''pg_catalog'', ''information_schema'', ''pg_toast'') order by pg_relation_size(pg_class.oid) desc;'
-- running query info
\set ps 'SELECT pid, usename, datname, now() - query_start as duration, state, SUBSTRING(query, 0, 100) || \' ...\' as query FROM pg_stat_activity WHERE query_start IS NOT NULL ORDER BY duration DESC;'