Postgres VACUUM and the Bloat It's Fighting
What Postgres's VACUUM process is actually cleaning up, why tables bloat despite it, and how to keep autovacuum from falling behind.
Tag
13 articles
What Postgres's VACUUM process is actually cleaning up, why tables bloat despite it, and how to keep autovacuum from falling behind.
How common table expressions clean up nested subqueries, and how recursive CTEs turn hierarchical data into a solvable SQL problem.
An introduction to window functions — running totals, rankings, and moving averages — for anyone still reaching for self-joins and subqueries.
Techniques for adding columns, changing types, and backfilling data on a live table without locking it or breaking the app mid-deploy.
How to use your database's built-in full-text search before reaching for a separate search cluster, and where it stops being enough.
A practical look at JSON and JSONB columns: when they replace a schema migration, when they hide a design problem, and how to index them.
What synchronous and asynchronous replication actually guarantee during a failover, and why the choice is really about how much data you can lose.
A comparison of range, list, and hash partitioning strategies, when each one earns its operational complexity, and when it's premature.
Why connection pool sizing is a math problem, not a guess, and the deadlocks, leaks, and saturation bugs that show up when it's sized wrong.
How Postgres lets readers and writers proceed without blocking each other, what a snapshot actually is, and where MVCC's costs show up later.
A tour of READ UNCOMMITTED through SERIALIZABLE, the dirty reads and phantom rows each level permits, and how to pick one without guessing.
A field guide to reading EXPLAIN output, spotting sequential scans that shouldn't be there, and turning a query plan into an actual fix.
A practical walkthrough of B-tree index internals, why they dominate relational databases, and how their structure shapes real query performance.