/database-performance

Database and query performance, measured

I started my career building database performance tooling, and I have been tuning databases since. My approach: profile first, change one thing, measure again.

Architectural invariants

  1. No query gets tuned until a trace proves it is slow.
  2. Every index is a write tax; it needs a read path to justify it.
  3. Caches have budgets: TTL defaults and size limits per key prefix.
  4. Payload size is a cost line, so serialization is an architecture decision.

Proof in production

  • Cut partner API response times 60% by removing expensive joins, partitioning indexes and pruning payloads.
  • Fixed endpoint timeouts using SQL analysis, database performance tools and OpenTelemetry tracing.
  • Reduced production cache memory 44% (peak utilization 94% → 56%) and built a shared client library with cluster-aware pooling and sane TTLs.
  • Moved cache serialization from Java to Protobuf 3 with zero downtime, saving over $1M a year.
  • Co-founded a SQL performance review committee; built storage growth prediction that was 70% more accurate.