PostgreSQL MVCC in Production: Dead Tuples, Autovacuum, and the Bloat-Wraparound Trade
Ask a PostgreSQL database administrator what kills databases in production and you’ll hear about wraparound — the event where a
Ask a PostgreSQL database administrator what kills databases in production and you’ll hear about wraparound — the event where a
Every team seems to arrive at the same configuration at some point: the database feels slow, someone searches for a
Continue readingConnection Pool Sizing: The Math That Says Fewer, Not More
Offset pagination is the first thing everyone learns and the first thing that falls over in production. The product manager
Continue readingBeyond OFFSET: Keyset Pagination in PostgreSQL That Actually Scales
Every schema migration is easy the first time, when the table is empty and the only user is your test
Continue readingZero-Downtime PostgreSQL Migrations: Locks, Rewrites, and Expand-and-Contract
# POST 2: Reading EXPLAIN A query that ran in 20 milliseconds yesterday takes 40 seconds today. Nothing in the
Continue readingReading EXPLAIN Like a Planner: Debugging Slow Queries in PostgreSQL
# POST 1: Transactional Outbox (Slot 10 backend) You update a row in your database, then publish an event to
Continue readingThe Transactional Outbox Pattern in Go: Reliable Events Without Dual Writes
PgBouncer has quietly become mandatory infrastructure for PostgreSQL at scale. If you run more than a few hundred client connections
Every PostgreSQL developer knows the four isolation levels from the SQL standard: Read Uncommitted, Read Committed, Repeatable Read, Serializable. Fewer
Continue readingPostgreSQL Isolation Levels: What Repeatable Read Actually Guarantees
PostgreSQL takes an ACCESS EXCLUSIVE lock for most ALTER TABLE operations. That lock conflicts with everything — reads, writes, even
Every PostgreSQL backend process is a full Unix process with its own megabytes of memory. That design choice buys you