如何在Postgresql数据库中找到大多数访问/使用过的表?

时间:2017-06-14 11:14:12

标签: postgresql postgresql-9.2

如何在Postgresql数据库中找到大部分访问和使用过的表?

2 个答案:

答案 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_updn_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