About
I'm an independent developer, and I write about database performance.
Most of what's here comes from slow pages, odd query plans and migrations that went sideways. I write each note after the problem is solved, in the form I wish I'd found while it was still open: a small example, the plan before and after, and what I'd check first next time.
The focus is Postgres: how to read EXPLAIN output, which index fits which query, why N+1 queries hurt, how connection pools behave under load, what VACUUM and bloat do to a busy table, and how to change a schema without taking the app down. Examples run on recent versions, and I say so when a behavior depends on one.
Mistakes happen. If you find one, write to plans@explainanalyze.site.