Skip to content

Readyset Weekly

Database insights for teams running Postgres and MySQL, delivered weekly.

Readyset Weekly · Issue 81 · November 10, 2026

What Your Agent Does to the Database When It Retries

If you are running an AI agent against a database, your query count is shaped as much by what fails as by what succeeds. When a tool call errors, times out, or returns something the model dislikes, t…

Readyset Weekly · Issue 80 · November 3, 2026

Your Agent’s Memory Is a Hot Read Path

If you are running an AI agent in production, some of your most repeated reads may be coming from a table you have never thought of as hot. Agent frameworks keep each conversation's state in a databa…

Readyset Weekly · Issue 79 · October 27, 2026

Four Database Checks to Run Before Black Friday

Your holiday code freeze is probably a week or two out, which means the queries your database runs today are largely the ones it will run at peak, just more of them. The common plan is to scale up th…

Readyset Weekly · Issue 78 · October 20, 2026

Why Your Query Stats Can’t Tell You When Something Broke

When a query gets slow, your customer will often notice before you do. The page drags, someone pings on-call, and an engineer opens or to work out what changed. By then the query has often been getti…

Readyset Weekly · Issue 77 · October 13, 2026

How Does Your Replica Know Where It Left Off?

Every replica needs to track its progress and know where to resume if the stream is interrupted. Postgres and MySQL handle this differently, and those differences matter for failover, recovery, and c…

Readyset Weekly · Issue 76 · October 6, 2026

The Cost of Keeping Postgres Healthy: Vacuum, Bloat, and Maintenance

PostgreSQL reported the largest popularity gain of any system in the first half of 2026, and for new projects it's increasingly the default choice. Its extension ecosystem and reliability make it a s…

Readyset Weekly · Issue 75 · September 29, 2026

PostgreSQL 19 Is Almost Here. Here’s What To Know.

PostgreSQL 19 hit its fourth beta on September 24, with a release candidate expected in early October and general availability targeted for the end of the month. The release brings improvements to ta…

Readyset Weekly · Issue 74 · September 22, 2026

MySQL 8.0 Went End-of-Life. Do You Know Which Clock You're On?

On April 30, 2026, MySQL 8.0 reached end of life, which means Oracle's community edition stops receiving security patches. Which clock you're on decides whether you're already exposed, being billed f…

Readyset Weekly · Issue 73 · September 15, 2026

The HTAP Dream Keeps Coming Back

In the space of a few weeks in 2025, two of the biggest names in analytics bought a transactional database. Databricks acquired Neon for about a billion dollars in May, and Snowflake acquired Crunchy…

Readyset Weekly · Issue 72 · September 8, 2026

Garbage Data, Garbage Agents

Garbage in, garbage out becomes more consequential when an AI agent can act on the output. Bad data no longer just produces a bad answer; it can trigger the wrong update, message, or workflow before…

Readyset Weekly · Issue 71 · September 1, 2026

The DBA Shortage That Wasn’t Budgeted For

In DataStrike's 2026 Data Infrastructure Survey, 74% of IT leaders said their budgets would grow this year, and yet only about a third of the organizations surveyed employ a dedicated DBA. Among the…

Readyset Weekly · Issue 70 · August 25, 2026

AI Agents Created 80% of New Databases

Databricks reports that on Neon, its serverless Postgres platform, AI agents now create 80% of all new databases, up from almost none two years earlier. Most of those databases are short-lived, spun…

Readyset Weekly · Issue 69 · August 18, 2026

When Scale-to-Zero Actually Saves You Money

Scale-to-zero is one of the headline features of some serverless databases, and the pitch is easy to like. When a database is idle for a set period, its compute stops and so do the associated compute…

Readyset Weekly · Issue 68 · August 11, 2026

When Ordinary Queries Become Your Most Expensive Workload

Pick one piece of operational data, say an order status. Now count how many systems depend on it: the ops dashboard, notification service, search index, mobile API, nightly analytics job, an AI agent…

Readyset Weekly · Issue 67 · August 4, 2026

Your AI Agent Has Never Seen Your Real Data

An AI agent that performs well in a demo environment is usually running under conditions that allow for that. The dataset is small, the whole schema fits in the context window, and someone is watchin…

Readyset Weekly · Issue 66 · July 28, 2026

Your Database Savings Shouldn’t Expire

Most teams judge database optimization by what it saves the day it's applied. An expensive query is tuned, an instance gets rightsized, a cache is added, and the bill gets smaller. At least for the t…

Readyset Weekly · Issue 65 · July 21, 2026

Caching Shouldn't Be a Part Time Job

As of today, Readyset can do it for you. It already identifies expensive queries and automatically caches them, but now the cache continuously re-evaluates which queries to cache, tunes TTL per query…

Readyset Weekly · Issue 64 · July 14, 2026

Why Cache Maintenance Is Moving Into the Database

Last week we looked at one of the harder problems in caching, which is keeping a cached result correct once the underlying data changes. This week it's worth asking a related question about where the…

Readyset Weekly · Issue 63 · July 7, 2026

When the Data Changes, What Does Your Cache Know?

The hardest part of caching isn't serving a query quickly. It's keeping the cached result correct after the underlying data changes. When a cached result is stale, nothing errors, nothing slows down,…

Readyset Weekly · Issue 62 · June 30, 2026

What Postgres 18's I/O boost helps, and what it doesn't

The headline from the Postgres 18 release in September was a single simple number: up to 3x faster reads from storage, courtesy of a new asynchronous I/O subsystem. PostgreSQL 19 Beta arrived this mo…

Readyset Weekly · Issue 61 · June 23, 2026

The Hidden Work Behind Zero-Downtime Migrations

A schema change tends to sound small when someone describes it. Add a column, change a type, drop a constraint. The migration script is a few lines and the review takes minutes. Run that same change…

Readyset Weekly · Issue 60 · June 16, 2026

Why Cache Invalidation Breaks in Production

Serving a cached query result is usually the easy part. You run the expensive join once, store the result, and serve it fast for subsequent requests. The hard part shows up later, when the underlying…

Readyset Weekly · Issue 59 · June 9, 2026

The 20% of Queries Driving Most of Your Database Load

Database load is rarely spread evenly. When the database starts straining, the instinct is to treat it as a whole-system problem: the database is slow, so the database needs more capacity. But pull a…

Readyset Weekly · Issue 58 · June 2, 2026

How MCP Changes Database Workloads

You have probably spent years thinking carefully about which queries reach your database and where they come from. Connection limits, permission scopes, slow query logs, query review in code review.…

Readyset Weekly · Issue 57 · May 26, 2026

Cloud Infrastructure Costs Are Rising. Is Your Database Ready?

For most of the last two decades, cloud infrastructure got cheaper every year. AWS made more than 100 price cuts between 2006 and 2023. That shaped how engineering teams make decisions: if something…

Readyset Weekly · Issue 56 · May 19, 2026

Your Database Probably Doesn’t Need Another Read Replica

OpenAI runs ChatGPT on a single PostgreSQL primary and close to 50 read replicas. That architecture gets held up as a scaling achievement, and it is, but it also highlights a pattern most engineering…

Readyset Weekly · Issue 55 · May 12, 2026

The Database Assumptions AI Agents Break

Most application databases were built around two assumptions: queries come from people or ORMs developers configured, and load is bounded by human demand. AI agents break those assumptions. AI agents…

Readyset Weekly · Issue 54 · May 5, 2026

Database Performance is a Three-Layer Problem

Most teams don't treat database performance as a system. When performance slows down, the usual response is reaching for a fix at the pain point: adding a cache with invalidation logic, adding larger…

Readyset Weekly · Issue 53 · April 28, 2026

MySQL 9.7 LTS: What Production Teams Need to Know

MySQL 9.7.0 LTS was released this week. For most teams running MySQL in production, this is the upgrade decision many have deferred since 8.4. Since the 8.4 LTS release in 2024, MySQL has been shippi…

Readyset Weekly · Issue 52 · April 21, 2026

The Hidden Cost of Slow Queries That Nobody Fixes

Most teams have a version of the same list: queries they know are slow or disproportionately expensive. They show up in logs and dashboards, get tickets, get deprioritized, and get pushed to the next…

Readyset Weekly · Issue 51 · April 14, 2026

Caching in the Age of AI-Generated SQL

Traditional query caching assumes something that is no longer always true: that a human wrote the query, understood its behavior, and could decide whether it should be cached. When SQL was written by…

Readyset Weekly · Issue 50 · April 7, 2026

How to Know Which Queries Are Actually Worth Caching

Adding a cache in front of your database sounds straightforward until you have to decide what goes in it. Cache everything, and you waste memory on queries that rarely repeat. Cache the wrong things,…

Readyset Weekly · Issue 49 · March 31, 2026

Connection Pooling: An Overlooked Bottleneck in High-Concurrency Systems

Most database performance conversations start with queries: slow joins, missing indexes, unoptimized aggregations. Connection pooling rarely makes that list, which is exactly why it becomes a problem…

Readyset Weekly · Issue 48 · March 24, 2026

Why LLMs Write Incorrect SQL (and What That Means for Your Database)

AI-assisted development has made it easier than ever to generate SQL quickly. The problem is that quick and correct are not the same thing, and with databases, the gap between the two has real conseq…

Readyset Weekly · Issue 47 · March 17, 2026

Application Caching vs SQL Caching: Where the Complexity Lives

When read latency starts to climb, adding a caching layer is usually one of the first solutions teams reach for. There are two common ways to go about it: build a caching layer at the application lev…

Readyset Weekly · Issue 46 · March 10, 2026

What to Consider Before You Shard Your Database

Sharding is often presented as the inevitable next step once a database outgrows a single node. But many teams underestimate the complexity it introduces and adopt it before fully exploring the trade…

Readyset Weekly · Issue 45 · March 3, 2026

Why Your P95 Latency Explodes Before Your CPU Does

P95 or P99 latency often spikes while CPU still looks "fine." Databases rarely fail exactly at 100% CPU, they degrade when queueing, contention, and coordination overhead begin compounding under load…

Readyset Weekly · Issue 44 · February 24, 2026

Reducing Database Storage Costs Without Hurting Performance

Storage growth is predictable, but storage bills aren't. In write-heavy systems especially, expanding datasets quietly turns storage into a persistent cost center. Here are practical ways to reduce s…

Readyset Weekly · Issue 43 · February 17, 2026

Vertical Scaling vs. Architectural Changes: When to Upgrade Hardware and When to Rethink the Stack

When performance degrades, the fastest reaction is often to add CPU or memory. Sometimes that works. But at scale, hardware stops addressing the underlying bottleneck. That's when architecture, not c…

Readyset Weekly · Issue 42 · February 10, 2026

Query Caching vs. Read Replicas: Which Reduces Day-2 Operational Drag?

Last week we compared query caching and read replicas through a cost lens; this week, we're looking at what matters once the system is live. Day-2 operations are where scaling decisions either fade i…

Readyset Weekly · Issue 41 · February 3, 2026

Query Caching vs. Read Replicas: Which Saves You More Money?

This week, we're breaking down a common scaling decision: read replicas versus query caching, and which one actually reduces cost as read traffic grows. Below are a few practical considerations when…

Readyset Weekly · Issue 40 · January 27, 2026

Optimizing PostgreSQL Query Execution Plans for Faster Performance

Last week we looked at how MySQL execution plans shape performance at scale. This week, we turn to PostgreSQL. Its planner is more powerful, but also easier to mislead if you are not paying attention…

Readyset Weekly · Issue 39 · January 20, 2026

Optimizing MySQL Query Execution Plans for Faster Performance

When MySQL performance degrades, the root cause is often hiding in the execution plan, not the query text itself. At scale, cost-based decisions that look reasonable on small data sets can compound i…

Readyset Weekly · Issue 38 · January 13, 2026

Scaling a Multi-Tenant SaaS Database Without Breaking Performance

Multi-tenant databases work well at low scale, but shared resources magnify inefficiencies as tenant count and traffic grow. The first problems rarely show up as obviously slow queries. Instead, they…

Readyset Weekly · Issue 37 · January 6, 2026

Eliminate Redundant Work with Targeted Caching

Most database performance problems aren't caused by slow queries, but by doing the same work repeatedly. At scale, redundancy becomes the dominant cost even when individual queries are "fast." Target…

Readyset Weekly · Issue 36 · December 30, 2025

Attack Replica Lag at the Source

Replica lag isn't always a replication problem. It's usually excess work on the primary. If replicas are falling behind, start here: 1. Reduce write amplification first: Extra index updates and redun…

Readyset Weekly · Issue 35 · December 23, 2025

The Hidden Cost of “Small” Queries at Scale

Most database outages don't start with slow queries. They start with "small" queries whose per-request cost looks trivial but becomes dominant at scale, silently burning CPU, memory, and network unti…

Readyset Weekly · Issue 34 · December 16, 2025

Why Replica Cost Creeps Back In and How to Prevent It

Last week, we covered the levers for reducing read replica cost: improving query hygiene, pooling connections, reducing lag, and eliminating redundant work. This week is about where those fixes break…

Readyset Weekly · Issue 33 · December 9, 2025

The Real Cost of Read Replicas (and How to Reduce It)

Read replicas often look like an easy scaling win, but the real cost shows up later. Each replica still parses, plans, and executes full queries, multiplying work and cloud spend and often quietly am…

Readyset Weekly · Issue 32 · December 2, 2025

Edge Caching vs. Query Caching: Choosing the Right Approach for Scalability

Teams often reach for edge caching to cut latency, and it works well for static or pre-rendered content. But when the bottleneck is the database, not the network, query caching is the solution you ne…

Readyset Weekly · Issue 91 · November 25, 2025

The Role of Connection Pooling in High-Throughput Applications

High-throughput systems usually fail not because queries are slow but because the database gets overwhelmed by connection churn. A good pool smooths spikes, reuses backends, and prevents short-lived…

Readyset Weekly · Issue 30 · November 18, 2025

Eventual Consistency vs. Strong Consistency: What’s Right for Your Application?

Consistency problems rarely show up as clear architectural flaws. They surface as latency, replica lag, and hotspots because reads and writes compete on the primary. Most systems already rely on some…

Readyset Weekly · Issue 63 · November 11, 2025

Making Sense of Adaptive or Feedback-Driven Balancing

Round-robin spreads load, read/write splitting separates intent, and latency-aware routing tracks speed. Adaptive balancing closes the loop by adjusting in real time based on live metrics such as CPU…

Readyset Weekly · Issue 28 · November 4, 2025

Being Aware of Latency-Aware Routing

When replicas span regions or clouds, round-robin and simple read/write splitting hit their limits. Latency-aware routing uses live query and health metrics to direct traffic to the lowest-latency re…

Readyset Weekly · Issue 27 · October 28, 2025

Navigating Read/write Splitting

After round-robin balancing, the next step is read/write splitting. It routes reads to replicas and writes to the primary. Done right, it scales reads efficiently. Done wrong, it causes lag and incon…

Readyset Weekly · Issue 26 · October 21, 2025

Round-Robin Load Balancing, the Right Way

Round-robin load balancing is the simplest way to spread reads across database replicas. It's often the first scaling step for teams moving past a single node, but simplicity doesn't mean "set and fo…

Readyset Weekly · Issue 25 · October 14, 2025

Load Balancing for Distributed Databases

As your app scales beyond a single database node, bottlenecks build up gradually through uneven workloads, lagging replicas, and overloaded primaries. Load balancing smooths those out before they cau…

Readyset Weekly · Issue 24 · October 7, 2025

When to Use SELECT FOR UPDATE

Row-level locking is often dismissed as a performance killer, but when used strategically, can actually improve system reliability and throughput. By locking rows as they are read, you prevent compet…

Readyset Weekly · Issue 23 · September 30, 2025

Digging Deeper on Partitioning Part 2: Key-Based Partitions

Last week, we covered time-based partitioning. This week, we're looking at key-based partitioning, which splits tables by a column like , , or region. It's particularly effective in multi-tenant SaaS…

Readyset Weekly · September 23, 2025

Digging Deeper on Partitioning Part 1: Time-Based Partitions

Last week we covered how partitioning avoids bottlenecks. This week we'll look at best practices for time-based partitioning in Postgres and MySQL. Pick the right interval: Use daily partitions for h…

Readyset Weekly · Issue 21 · September 16, 2025

How Partitioning Prevents Database Bottlenecks

As tables grow, even well-indexed queries can slow to a crawl. Partitioning splits a large table into smaller, more manageable chunks. That way, the database only scans what is relevant. Done right,…

Readyset Weekly · Issue 20 · September 9, 2025

Materialized Views vs. Query Caching: Which One Should You Use?

When queries start dragging, engineers often reach for materialized views or query caching. Both reduce redundant computation, but the better fit depends on freshness needs, write patterns, and workl…

Readyset Weekly · Issue 19 · September 2, 2025

How to Avoid Gap Locks in MySQL

Gap locks are a MySQL behavior many teams discover only after they cause production issues. They enforce isolation in InnoDB but can create unexpected contention in simple queries. For example: This…

Readyset Weekly · Issue 18 · August 26, 2025

Heavyweight Locks and How To Watch Out for Them

Database locks protect consistency, but not all are equal. Row-level locks are common and usually manageable in high-concurrency workloads, but heavyweight locks that control tables, indexes, or sche…

Readyset Weekly · Issue 17 · August 19, 2025

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 Postgre…

Readyset Weekly · Issue 16 · August 12, 2025

Using the Right Isolation Level for Performance Under Load

Higher isolation levels increase consistency but reduce throughput and raise contention. Most OLTP workloads don't need . Here's what to use instead: is usually enough: It prevents dirty reads withou…

Readyset Weekly · Issue 15 · August 5, 2025

How to Keep Transactions Short and Scoped

Long transactions are a common source of lock contention, replication lag, and unpredictable performance in high-traffic databases. Here are a few tips for keeping transactions short and tightly scop…

Readyset Weekly · Issue 14 · July 29, 2025

How to Reduce Contention in High-Traffic Databases

As database traffic grows, so does the risk of contention and locking. These issues can silently stall reads, block writes, and trigger cascading slowdowns. Here's how to spot and fix contention befo…

Readyset Weekly · Issue 13 · July 22, 2025

Scaling PostgreSQL Without Sharding: Alternatives That Preserve SQL Semantics

Sharding is a well-known method for scaling Postgres, but, like in MySQL, it comes with significant tradeoffs: broken joins, additional application logic, weaker transaction support, and shard key mi…

Readyset Weekly · Issue 12 · July 15, 2025

How to Scale MySQL Without Sharding

Sharding (splitting your data across databases) is a well-known strategy for scaling MySQL. However, it comes at a high cost: complex joins, extra application logic, weaker transaction support, compl…

Readyset Weekly · Issue 11 · July 8, 2025

When Query Optimization Isn’t Enough

You’ve optimized your queries. You’ve tuned indexes, analyzed execution plans, and warmed the cache. But your database still lags. Your users are still impacted. Why? Because even fast queries, when…

Readyset Weekly · Issue 10 · July 1, 2025

Should You Use Read Replicas or Caching?

Replicas are a common way to scale read traffic, but they don’t reduce compute. Every query still gets parsed, planned, and executed. Add lag and infrastructure cost, and teams hit scaling limits fas…

Readyset Weekly · Issue 9 · June 23, 2025

The Hidden Performance Costs of ORMs and How to Avoid Them

ORMs can simplify development, but often slow down your database. From N+1 queries to redundant joins, they usually generate inefficient SQL that kills performance at scale. Here are a few common pit…

Readyset Weekly · Issue 8 · June 16, 2025

Identifying and Fixing Slow Queries

Slow database queries can significantly degrade application performance, user experience, and more. However, a few minor changes can dramatically reduce query latency. Start by identifying slow queri…

Readyset Weekly · Issue 7 · June 10, 2025

How To Reduce Query Latency Without Changing Your Code

You don’t need to rewrite application code to improve query performance; instead, optimize your SQL structure. A few examples: Use instead of for subqueries; PostgreSQL’s planner often handles more e…

Readyset Weekly · Issue 6 · June 2, 2025

What’s Slowing Down Your Postgres Queries (And How to Speed Them Up)

Got slow PostgreSQL queries? It’s often more than just SQL, issues with the planner, memory settings, or state states may be the real culprits. Here’s how to start troubleshooting: Get real performan…

Readyset Weekly · Issue 5 · May 27, 2025

What’s Slowing Down Your MySQL Queries (And How to Speed Them Up)

Not all slow MySQL queries stem from bad schemas, sometimes it’s a subtle misconfig, missing indexes, or outdated assumptions. Here’s what to check first: Start with : Check how MySQL plans to execut…

Readyset Weekly · Issue 4 · May 20, 2025

Why Your Indexes Aren’t Helping

Indexes are supposed to accelerate queries, but poor design can bloat storage and slow things down. Make them work smarter, not harder. In PostgreSQL: Identify deadweight indexes with by checking for…

Readyset Weekly · Issue 3 · May 13, 2025

Why OFFSET and LIMIT Pagination Breaks at Scale and What to Use Instead

Using and to paginate queries in PostgreSQL or MySQL forces the database to scan and discard all skipped rows before returning the next page. That’s fine for small datasets, but for large ones, the d…

Readyset Weekly · Issue 2 · May 6, 2025

Why Autovacuum Might Be Slowing You Down and How to Fix It

Autovacuum keeps PostgreSQL healthy by cleaning up dead tuples, reclaiming storage, maintaining index efficiency, and preventing transaction ID wraparound. However, when it falls behind or isn’t tune…

Readyset Weekly · Issue 1 · April 29, 2025

Why You Can’t Always Trust Query Plans and What To Do About It

Query plans can be misleading. Many engineers rely on alone when debugging slow queries, but without actual runtime data, you’re flying blind. Here’s what you can do about it: In PostgreSQL, always u…