PgBouncer 1.26.0: Pre-Auth CVEs, the search_path Fix, and What Changes for Pool Sizing
PgBouncer has quietly become mandatory infrastructure for PostgreSQL at scale. If you run more than a few hundred client connections
PgBouncer has quietly become mandatory infrastructure for PostgreSQL at scale. If you run more than a few hundred client connections
Every analytics dashboard has one question that looks trivial and isn’t: how many unique users did this? You can run
Continue readingHyperLogLog: Counting a Billion Uniques in 1.5 KB of Memory
Sooner or later, every API designer hits the pagination wall. The endpoint works fine in staging, then production traffic arrives
Continue readingAPI Pagination Strategies: Offset, Cursor, and Relay Connections Done Right
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
Every API that returns a list eventually has to answer the same question: how do you hand out a million
Every slow query investigation eventually reaches the same moment: you run EXPLAIN ANALYZE, and the plan makes no sense. Postgres
Continue readingReading EXPLAIN ANALYZE: Why Postgres Ignores Your Index
Every schema migration tool will happily tell you how to change a table. Almost none of them will tell you
Continue readingZero-Downtime Database Migrations: Expand-Contract, Backfills, and Locks
Every PostgreSQL connection is a process on the server. Not a thread, not an entry in a table — a
Continue readingDatabase Connection Pooling: PgBouncer, Pool Sizing, and the Math Behind Both