Tom*_*Tom 4 postgresql postgresql-performance
我的表在白天变化很大,大量数据被删除、修改和插入。
我怀疑这些表上的表和索引可能会臃肿。
我已经看到 PostgreSQL 的扩展选项可以检查这一点,但我想避免在我的数据库中创建扩展。
如何获取此信息(表/索引臃肿)而不必使用 PostgreSQL 扩展(例如:pgstattuple),仅使用本机 PostgreSQL 12 功能。
小智 5
由于您已经在评论中得到了回答,因此最好使用标准pgstattuple扩展。如果由于某种原因您不想使用它,您可以看到近似的膨胀值,如下所示:
-- Perform ANALYZE on your table
ANALYZE <table_name>;
-- Get the number of deadlines in your tables.
select schemaname,
relname,
pg_size_pretty(pg_relation_size(schemaname|| '.' || relname)) as size,
n_live_tup,
n_dead_tup,
CASE WHEN n_live_tup > 0 THEN round((n_dead_tup::float /
n_live_tup::float)::numeric, 4) END AS dead_tup_ratio,
last_autovacuum,
last_autoanalyze
from pg_stat_user_tables
order by dead_tup_ratio desc NULLS LAST;
Run Code Online (Sandbox Code Playgroud)
越高dead_tup_ratio,表的膨胀程度就越高。但这些都是在统计过程中收集到的近似数据!确定膨胀的最佳方法是使用扩展pgstattuple。