Because of MVCC, updates/deletes create dead tuples that must be cleaned up by VACUUM. Bloat happens when cleanup can’t keep up (heavy updates, long transactions, poor autovacuum settings), so tables/indexes grow. Mitigation: tune autovacuum, avoid long transactions, and periodically `REINDEX`/`VACUUM (FULL)` or use online tools like pg_repack when needed.