Connection Pool Sizing: The Math That Says Fewer, Not More
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
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
Every UPDATE in PostgreSQL is secretly an INSERT-plus-a-tombstone. The old row version stays on disk, fully readable to any transaction
Continue readingMVCC and VACUUM in PostgreSQL: Dead Tuples, Autovacuum Tuning, and What PG18 Changed