DBAtlas · Атлас эксплуатации баз данных

Оценить раздувание (bloat) таблиц

PostgreSQLХранение

Команда

SELECT schemaname, relname AS table_name, n_dead_tup AS dead_rows, n_live_tup AS live_rows, round(n_dead_tup::numeric / NULLIF(n_live_tup + n_dead_tup, 0) * 100, 1) AS dead_pct, last_autovacuum FROM pg_stat_user_tables WHERE n_dead_tup > 0 ORDER BY n_dead_tup DESC LIMIT 20;

Что делает

Показывает долю раздувания на основе числа мёртвых кортежей и времени последнего autovacuum.

Когда использовать

Чтобы определить потребность в VACUUM и понять, успевает ли autovacuum.

Внимание

n_dead_tup — это оценка, постоянно обновляемая по счётчикам DML (снижается после VACUUM; ANALYZE лишь корректирует оценку); для точного физического раздувания расширение pgstattuple (pgstattuple('customer')) точнее.

Открыть в DBAtlas →

Связанные материалы