~/talk

Inside Postgres: why VACUUM matters

Talkat Rootconf 2025 Annual Conference · 2025-05-16..05-17· [databases]
links:none on file
slides:none on file

Explains how PostgreSQL implements MVCC with per-row xmin/xmax timestamps, how updates append new tuples and create hot chains rather than in-place changes, how indexes point to tuple CTIDs, and why shared_buffers and 8KB pages make cross-page redirects expensive. Gives a concrete example: updating 1,000,000 rows → 2,000,000 tuples doubles on-disk size (71MB → 142MB) until VACUUM marks dead tuples reusable; VACUUM FULL rebuilds and frees space but locks the table, PGRepack is a safer alternative.

AI-written summary · about

  1. 0:00Postgres MVCC intro
  2. 1:09Postgres transactions
  3. 2:11Isolation levels
  4. 8:33MVCC row versions
  5. 17:24MVCC visibility rules
  6. 18:28Postgres disk storage
  7. 23:07Heap polypage optimization
  8. 32:58Postgres read/write
  9. 36:06MVCC dead tuples
  10. 37:08Vacuum garbage collector
  11. 40:40Vacuum full trade-offs
  12. 44:21Q&A
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.