* show picture insert / delete / update * show indexes * explain xids * vacuum passes through heap * vacuum passes through indexes * visibility map * [ freeze map ] * manual vacuum * autovacuum * triggers - autovacuum_vacuum_scale_factor - autovacuum_analyze_scale_factor - autovacuum_vacuum_threshold - autovacuum_analyze_threshold - autovacuum_freeze_max_age * rate limiting - vacuum_cost_page_hit = 1 - vacuum_cost_page_miss = 10 - vacuum_cost_page_dirty = 20 - vacuum_cost_limit = 200 - vacuum_cost_delay = 0 - autovacuum_vacuum_cost_delay = 20 - autovacuum_vacuum_cost_limit = -1 / vacuum_cost_delay - other tuning - vacuum_freeze_table_age - autovacuum_max_workers - autovacuum_naptime * tuning: - big enough maintenance_work_mem / autovacuum_work_mem - disable / tune cost limiting - WAL / IO tuning - max_wal_size (checkpoint_segments) - shared_buffers - prefetching relation before vacuum * HOT * issues * longlived transactions / snapshots - including (auto-)analyze! - snapshots are held till * no triggers on insert - index only scans! * wraparound scans extremely expensive - freeze map improves this in 9.6 * future improvements - freeze map (9.6) - parallel vacuum (10?) - "early tuple cleanup" (discussed, not fully started) - partial HOT tuples (some indexes updated)