Visualizing PostgreSQL Storage Internals
April 21–22
Many PostgreSQL developers work with tables and indexes without ever seeing how data is physically stored. This talk combines explanation of storage fundamentals with live demonstrations using pg-storage-visualizer, an interactive tool I built to make these concepts visible.
Theory first, then we look at real pages. We'll go through how PostgreSQL organizes heap pages and tuples, what xmin and xmax actually contain and how snapshots use them, then watch an UPDATE leave a dead tuple behind. We'll look at B-tree index pages - the root, internal nodes, leaf pages - and see what index bloat looks like when you're staring at page contents. We'll cover why VACUUM cleans the heap but can't reclaim space from indexes, and when you need REINDEX. HOT updates get their own section because they're underused and misunderstood.
You'll leave knowing how to use pageinspect to see this yourself, and with a better mental model for why tables grow, why VACUUM matters, and what's actually happening when things get slow.