
Document or Relational: Read-Time or Write-Time Cost
Relational modeling describes the entities and lets queries follow. Document modeling inverts that, and the inversion is the whole trade.
· 4 min
author
Database engineer · 8 articles
Elias Rowe writes about database engineering, SQL performance, and production systems. He focuses on measurable behavior, practical trade-offs, and conclusions that can be reproduced rather than assumed.
PostgreSQL · MySQL · Query optimization · Data modeling · Production operations

Relational modeling describes the entities and lets queries follow. Document modeling inverts that, and the inversion is the whole trade.
· 4 min

Past the point where the server can execute work in parallel, adding connections adds queueing rather than throughput — and moves the queue somewhere worse.
· 4 min

Column order decides which queries a composite index can serve. The rule follows from the structure, and so do the cases where it does not hold.
· 3 min

InnoDB stores the table inside its primary key. Almost every MySQL indexing consequence, good and bad, follows from that single decision.
· 3 min

Transaction pooling is what makes PgBouncer worth deploying, and it silently removes session state your application may depend on.
· 3 min

Which variant you ran decides whether the numbers in front of you are the planner's estimate or a measurement, and whether the pages came from cache.
· 4 min

One query for the list, then one more for every item in it. The cost is per statement, which is why the profiler shows a fast database and a slow request.
· 3 min

An index the planner ignores is usually a row-estimate problem. The fix starts with what the optimizer expected, not with the index definition.
· 3 min