Readyset Weekly: Issue 17
Reducing Write Hotspots Before They’re Problematic
In Postgres and MySQL, write hotspots can turn into choke points fast: concurrent updates serialize, transactions pile up, and tail latency climbs.
To stay ahead of the pile-up:
- For MySQL and Postgres:
- Batch updates instead of row-by-row increments to cut lock churn and boost throughput.
- Offload hot updates to a background queue so they run in order without blocking front-end requests.
- Revisit schema design: splitting frequently updated fields into their own table can be a simple fix.
- For Postgres:
- Use advisory locks to coordinate updates explicitly, especially when multiple code paths touch the same row.
- Partial indexes on hot subsets: if contention is concentrated on a small set of rows, partial indexes reduce index size and improve lookup performance.
- For MySQL:
- Use secondary indexes carefully: covering indexes can reduce base table access on frequently updated rows.
- Tune
AUTO_INCREMENTlocks: adjustinnodb_autoinc_lock_modeto avoid table-level locks during high-frequency inserts.
The bottom line: if you know where traffic converges, you can neutralize contention before it becomes an incident. A bit of foresight in design saves you from costly firefighting later.
🔍 What We're Watching in the Database Ecosystem
Vector Search Is Reaching Its Limit. Here's What Comes Next
Vector databases power today's RAG systems, but they struggle with basics like full-text queries, structured filters, real-time updates, and custom ranking. Bonnie Chase (Vespa.ai) claims we're reaching the ceiling of what embeddings alone can do and explores what comes next.
How would you design a database on Object Storage?
In this podcast, the team from Turbopuffer talk about the complexities of building a database on top of object storage. Discover the key challenges, the nuances of various storage formats, and the critical trade-offs involved.
pg_exporter v1.0.0 delivers next-level PostgreSQL observability with 600+ metrics, 50+ prebuilt collectors, and full YAML-based customization; covering core PG, popular extensions, and pgBouncer from a single exporter. It's battle-tested at massive scale and already supports PostgreSQL 18.
In Case You Missed It
New on our Blog and YouTube
Optimizing Straddled Joins in Readyset: From Hash Joins to Index Condition Pushdown
Straddled joins were our cold-path troublemaker, forcing excessive data scans on cache misses. In this blog, Marcelo explains how our new Index Condition Pushdown flips the execution model, pushing filters down to the storage engine and fetching only what's needed. The benchmarks speak for themselves.
Get Readyset Weekly in your inbox
One email a week — what shipped, what we learned, and what is worth reading.