Skip to main content

Bloat Analysis

The Bloat Analysis section identifies tables and indexes with excessive dead tuples (table bloat) or wasted space (index bloat). Bloat accumulates over time due to PostgreSQL's MVCC mechanism and must be managed through regular VACUUM operations.

AWR Bloat Analysis


Summary Cards

CardDescription
Total Tables AnalyzedNumber of tables examined + count with high bloat (> 20%)
Tables with High BloatTables with bloat > 20%, with total reclaimable bloat size
Total Indexes AnalyzedNumber of indexes examined + count with high bloat
Tables Needing VACUUMTables requiring immediate VACUUM attention

AWR Bloat Summary Cards


Top Bloated Tables

Tables ranked by absolute bloat size.

ColumnDescription
RankPosition by bloat size
Table NameSchema and table name
Table SizeCurrent physical size of the table
Dead TuplesNumber of dead (obsolete) tuples
Dead %Percentage of dead tuples — color-coded badge by severity
Bloat SizeEstimated reclaimable space
Last VacuumTimestamp of the last manual VACUUM run
Last AutovacuumTimestamp of the last autovacuum run
ScriptCopy button to generate the VACUUM script for this table

AWR Bloat Tables

Bloat Severity Levels

Dead %SeverityBadge
< 10%Normal🟢 Green
10–20%Low🔵 Blue
20–40%Warning🟠 Orange
> 40%Critical🔴 Red

Top Bloated Indexes

Indexes ranked by absolute bloat size.

ColumnDescription
RankPosition by bloat estimate
Index NameSchema and index name
Table NameAssociated table
Index SizeCurrent physical size of the index
Bloat %Estimated bloat percentage — color-coded by severity
Bloat Est.Estimated reclaimable space
ScansNumber of index scans during the report period
EfficiencyIndex scan efficiency percentage
RecommendationSuggested action (REINDEX, MONITOR, OK)
ScriptCopy button to generate the REINDEX script (when applicable)

AWR Bloat Indexes

Index Recommendations

RecommendationMeaning
REINDEXIndex bloat is significant — rebuild the index
MONITORBloat is growing — keep an eye on it
OKIndex is healthy
REINDEX impact

REINDEX locks the index during rebuild. For production tables, use REINDEX CONCURRENTLY to avoid blocking reads and writes:

REINDEX INDEX CONCURRENTLY schema.index_name;

VACUUM Recommendations

Below the tables and indexes, an automated VACUUM Recommendations section groups affected tables by recommendation type and provides:

  • Category — type of recommendation (e.g. immediate vacuum, autovacuum tuning)
  • Affected Tables Count — number of tables concerned
  • Message — explanation of the recommendation
  • Affected Tables — list of table names

When no recommendations are generated, a green confirmation message indicates that database maintenance is up to date.

AWR Vacuum Recommandations


Interpretation Guide

Tables Never Vacuumed

If Last Vacuum and Last Autovacuum are both empty, the table has never been vacuumed. This is critical for tables with frequent updates or deletes — autovacuum configuration should be reviewed.

High Dead Tuples with Recent Autovacuum

If autovacuum ran recently but dead tuples are still high, autovacuum thresholds may be too conservative. Consider lowering autovacuum_vacuum_scale_factor for that table:

ALTER TABLE schema.table_name SET (
autovacuum_vacuum_scale_factor = 0.01,
autovacuum_analyze_scale_factor = 0.005
);

Large Bloat Size

If bloat represents a significant portion of the table size, consider VACUUM FULL during a maintenance window (requires AccessExclusiveLock) or pg_repack for online bloat removal.


Next Steps