PostgreSQL
Autovacuum Is Running and Your Table Is Still Bloating
Dead tuples that never get reclaimed, a table twice the size of its data, and queries getting slower every week. Here is what blocks vacuum and how to see it.
Query performance, deadlocks, N+1 patterns and data integrity problems across relational and non relational stores.
PostgreSQL
Dead tuples that never get reclaimed, a table twice the size of its data, and queries getting slower every week. Here is what blocks vacuum and how to see it.
MicroVMs
Query times doubling at unpredictable hours with no deploy and no traffic spike. When the cause is not in your process, it is usually not on your machine either.
Bug Hunt
The classic heisenbug. Here is why observation changed the outcome, and the three techniques that found it anyway.
PostgreSQL
Two transactions each hold what the other wants. Here is how to read the deadlock report, find both statements, and restructure so it cannot happen again.
PostgreSQL
You added the index and the query is still slow. Here is how to read a Postgres query plan properly and find the row estimate error causing it.
Bug Hunt
The dashboard looked right. The numbers were wrong by a few percent every day, and the reason was one implicit conversion in a reporting query.
Networking
At-least-once delivery means duplicates are normal operation, not an edge case. Here is how to build a handler that survives them.
Databases
Reading from cache is easy. Knowing when to remove something is where the bugs live, and most of them are races.
PostgreSQL
Adding a column should be instant. Sometimes it is not, and the difference is worth knowing before you run it in production.
Databases
The code reads beautifully and issues four thousand queries. Here is how to detect them automatically instead of discovering them in production.
PostgreSQL
Connection pooling explained through the failure it prevents, and why raising max_connections is usually the wrong fix.