如何在Postgresql数据库中找到大部分访问和使用过的表?
答案 0 :(得分:3)
最常读的是:
select schemaname,relname,seq_scan,idx_scan
from pg_stat_all_tables
order by coalesce(seq_scan,0)+coalesce(idx_scan,0) desc
limit 5;
对插入n_tup_ins
,更新n_tup_upd
,n_tup_hot_upd
和deltes:n_tup_del
也可以这样做。
或大多数通常通过汇总它们来访问,例如order by coalesce(seq_scan,0)+coalesce(idx_scan,0)+coalesce(n_tup_ins,0) + ...
等
答案 1 :(得分:1)
取决于你如何计算“加入和使用”。
如果索引和顺序扫描的数量对您来说是一个很好的衡量标准,您可以使用:
SELECT schemaname, relname,
COALESCE(seq_scan, 0) + COALESCE(idx_scan, 0) nr_accesses
FROM pg_stat_all_tables
ORDER BY 3 DESC NULLS LAST;
或者,如果访问的行数对您来说是更好的衡量标准,则可以使用seq_tup_read + idx_tup_fetch
。