PostgreSQL guides
Short, practical deep dives into the parts of PostgreSQL that bite in production. No fluff, real commands, honest trade-offs.
How to read EXPLAIN ANALYZE
What the costs mean, why actual times and rows are per-loop averages, what BUFFERS tells you, and the traps that make plans misleading at first glance.
PerformanceChoosing the right index
B-tree covers most cases — but GIN, GiST, BRIN, partial and expression indexes each have a moment where they win by an order of magnitude.
OperationsVACUUM, autovacuum and table bloat
MVCC never updates a row in place. Where the dead versions go, how autovacuum decides when to clean up, and how to tell when it's falling behind.
ConcurrencyTransaction isolation levels
What Read Committed actually guarantees (less than you think), when Repeatable Read and Serializable throw errors, and how to retry correctly.
How these guides are written
Each guide is based on how PostgreSQL actually behaves in production, verified against the official documentation. They focus on the questions that come up when something is slow or blocked at 4pm on a weekday — not on completeness for its own sake. Where a topic has a matching interactive tool on this site, the guide links to it.
