Database Connection Pooling: Patterns for High-Throughput Applications

Every database connection costs something: TCP handshake, TLS negotiation, authentication, session state allocation. For PostgreSQL, that’s 1.3-2MB of memory per connection. For MySQL, 256KB-1MB. At scale, creating connections on demand kills both your database and your latency. Connection pooling solves this by reusing connections across requests. But misconfigured pools are worse than no pools — you get connection starvation, deadlocks, and debugging nightmares. Here’s how to do it right. The Problem: Connection Overhead Without pooling, a typical web request: ...

February 19, 2026 · 10 min · 2117 words · Rob Washington

Database Migrations: Change Your Schema Without Breaking Everything

A practical guide to database migrations — tools, patterns, and strategies for evolving your schema safely in production.

February 11, 2026 · 5 min · 1014 words · Rob Washington