<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ReadySet</title>
    <description>The latest articles on DEV Community by ReadySet (@readyset).</description>
    <link>https://dev.to/readyset</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1232832%2Fad488c0d-7def-48e6-a0e2-b8ad5355fabe.png</url>
      <title>DEV Community: ReadySet</title>
      <link>https://dev.to/readyset</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/readyset"/>
    <language>en</language>
    <item>
      <title>How Readyset Rewrites Your SQL: Subqueries in HAVING, ORDER BY, JOIN ON</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Thu, 20 Aug 2026 14:09:21 +0000</pubDate>
      <link>https://dev.to/readyset/how-readyset-rewrites-your-sql-subqueries-in-having-order-by-join-on-3kg</link>
      <guid>https://dev.to/readyset/how-readyset-rewrites-your-sql-subqueries-in-having-order-by-join-on-3kg</guid>
      <description>&lt;p&gt;Readyset's rewrite pipeline now handles subqueries in four new positions: HAVING, ORDER BY, INNER JOIN ON, and LEFT OUTER JOIN ON. Queries that previously fell back to the upstream database now compile and maintain incrementally.&lt;/p&gt;

&lt;p&gt;BI tools, reporting queries, and hand-written SQL regularly put subqueries in these positions. All four rewrites build on the same underlying idea of moving the subquery to a position that existing decorrelation already handles. &lt;/p&gt;

&lt;p&gt;LEFT OUTER JOIN ON required a different approach entirely, because the obvious move of placing the subquery predicate in WHERE silently drops rows the join was meant to preserve. The post works through what the correct solution looks like and why the mechanics of the dataflow model make it necessary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://readyset.io/blog/where-a-subquery-can-live" rel="noopener noreferrer"&gt;Read the full article here&lt;/a&gt;. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Introducing Adaptive Cache for Dynamically Managing Freshness</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Thu, 13 Aug 2026 14:08:23 +0000</pubDate>
      <link>https://dev.to/readyset/introducing-adaptive-cache-for-dynamically-managing-freshness-2cc9</link>
      <guid>https://dev.to/readyset/introducing-adaptive-cache-for-dynamically-managing-freshness-2cc9</guid>
      <description>&lt;p&gt;Traditional caches give you the same tradeoff: pick one refresh interval, and it applies to everything. Stable data gets refreshed more than it needs to while volatile data sits stale longer than you'd like. Tune one, you compromise the other.&lt;/p&gt;

&lt;p&gt;That's why we built Adaptive Cache, which is available today as part of the Readyset Platform. Adaptive Cache adjusts the refresh interval per cached result based on how frequently that result actually changes, with no manual tuning required.&lt;/p&gt;

&lt;p&gt;In our testing, p95 staleness dropped 97% compared to a standard TTL cache, with only a 60% increase in upstream refresh load instead of the 490% increase you would need to achieve the same result by manually shrinking the interval.&lt;/p&gt;

&lt;p&gt;This is a key step toward caching that's truly invisible, no tuning, no babysitting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://readyset.io/blog/adaptive-cache" rel="noopener noreferrer"&gt;Read the full post here.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>caching</category>
      <category>postgres</category>
      <category>mysql</category>
    </item>
    <item>
      <title>Your Database Bill Is Climbing Faster Than Your Traffic</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Thu, 06 Aug 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/readyset/your-database-bill-is-climbing-faster-than-your-traffic-1330</link>
      <guid>https://dev.to/readyset/your-database-bill-is-climbing-faster-than-your-traffic-1330</guid>
      <description>&lt;p&gt;Cloud infrastructure pricing is moving in a direction nobody wanted. DRAM contract prices rose 93% to 98% in a single quarter, and that cost is landing on database bills across the board, which means the instance you are running today is going to cost more over the next year.&lt;/p&gt;

&lt;p&gt;The cost per query is a lever you can still move, and we ran the benchmark to show what that looks like in practice: Readyset in front of MySQL on the same hardware, 99.94% of reads served from cache, cost per million queries dropping from $1.36 to $0.0064, a gap that held under every projected price increase we modeled.&lt;/p&gt;

&lt;p&gt;If you run a cloud database, here is the &lt;a href="https://readyset.io/blog/your-database-bill-is-climbing-faster-than-your-traffic" rel="noopener noreferrer"&gt;full analysis and reproducible benchmark&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>postgres</category>
      <category>database</category>
    </item>
    <item>
      <title>July Product Update</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Mon, 03 Aug 2026 17:45:14 +0000</pubDate>
      <link>https://dev.to/readyset/july-product-update-23i3</link>
      <guid>https://dev.to/readyset/july-product-update-23i3</guid>
      <description>&lt;p&gt;Our July Product Update is Live!&lt;/p&gt;

&lt;p&gt;We launched the &lt;a href="https://readyset.io/downloads" rel="noopener noreferrer"&gt;Readyset Platform&lt;/a&gt; this month, combining QueryPilot, rdst, and new components into a self-tuning query acceleration layer. Now available as a desktop app so you can run and test it on your own workload. Freshness that tunes itself, eviction that can't be thrashed, built-in debugging. It’s a cache you can just leave on.&lt;/p&gt;

&lt;p&gt;Khanh Tran, VP of Engineering at Hussle, put it well: "Our optimization has moved from low config to no config."&lt;/p&gt;

&lt;p&gt;Plus, we cut CPU load on shallow cache workloads by 75%, shipped TopK as generally available, expanded Postgres cache coverage, and more. The full update covers our latest release, a roundup of our recent content, and details on our upcoming August 18 webinar, where you can see the Readyset Platform in action.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://readyset.io/blog/july-2026-product-update" rel="noopener noreferrer"&gt;Read it here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>database</category>
      <category>mysql</category>
      <category>postgres</category>
    </item>
    <item>
      <title>How the AI Buildout Is Repricing the Rest of Your Infrastructure</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Thu, 30 Jul 2026 14:07:08 +0000</pubDate>
      <link>https://dev.to/readyset/how-the-ai-buildout-is-repricing-the-rest-of-your-infrastructure-jck</link>
      <guid>https://dev.to/readyset/how-the-ai-buildout-is-repricing-the-rest-of-your-infrastructure-jck</guid>
      <description>&lt;p&gt;The biggest near-term cost of the AI boom is what the buildout is doing to the price of everything else you run. DRAM contract prices rose 90 to 95 percent in a single quarter, and memory-heavy infrastructure like databases is taking the hardest hit.&lt;/p&gt;

&lt;p&gt;Our white paper &lt;a href="https://readyset.io/resources/resource-ai-buildout-is-repricing-your-infrastructure-white-paper" rel="noopener noreferrer"&gt;How the AI Buildout Is Repricing the Rest of Your Infrastructure&lt;/a&gt; covers how AI demand is repricing ordinary compute and which changes pay for themselves at current prices.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>database</category>
      <category>mysql</category>
      <category>postgres</category>
    </item>
    <item>
      <title>Nobody wants a cache</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Wed, 22 Jul 2026 14:10:54 +0000</pubDate>
      <link>https://dev.to/readyset/nobody-wants-a-cache-3k1</link>
      <guid>https://dev.to/readyset/nobody-wants-a-cache-3k1</guid>
      <description>&lt;p&gt;Nobody wants a cache. What people want is for reads to be fast, and for that speed to stop costing them.&lt;/p&gt;

&lt;p&gt;When reads get expensive, most teams have two options: scale up with bigger instances and read replicas, or build caching by hand and pay engineers to maintain it. Both can be serious spend, and both hold only until the next time traffic shifts.&lt;/p&gt;

&lt;p&gt;Today we're launching the &lt;a href="https://readyset.io/docs" rel="noopener noreferrer"&gt;Readyset Platform&lt;/a&gt;. Caching now runs in your infrastructure and tunes itself as workloads change. It decides what's worth caching, adjusts freshness per query, and directs memory where it delivers the most return.&lt;/p&gt;

&lt;p&gt;The result is smaller instances, fewer read replicas, and engineering time back on your roadmap instead of your cache. It's the cache you can leave on, and it will be better four months from now than it is today, at no additional cost to you.&lt;/p&gt;

&lt;p&gt;Our CEO Gautam Gopinadhan wrote up &lt;a href="https://readyset.io/blog/nobody-wants-a-cache" rel="noopener noreferrer"&gt;the thinking behind it, where automatic caching goes wrong, and what we built to close those gaps&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8l7emkkfogq51rj5wh86.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8l7emkkfogq51rj5wh86.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>postgres</category>
      <category>mysql</category>
    </item>
    <item>
      <title>TopK is now Generally Available</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Thu, 16 Jul 2026 14:06:30 +0000</pubDate>
      <link>https://dev.to/readyset/topk-is-now-generally-available-kno</link>
      <guid>https://dev.to/readyset/topk-is-now-generally-available-kno</guid>
      <description>&lt;p&gt;Leaderboards, activity feeds, top-rated products. Most applications have at least a few queries that ask for the best K rows out of a large set.&lt;/p&gt;

&lt;p&gt;Readyset has always been able to cache those queries. With TopK, it now does so much more efficiently by storing only the top K rows per key instead of every matching row.&lt;/p&gt;

&lt;p&gt;TopK is now generally available. The new approach reduces memory usage by several orders of magnitude, keeps more keys resident in cache, and eliminates post-processing overhead on every read.&lt;/p&gt;

&lt;p&gt;No application changes. No new flags. If your cached queries have the right shape, Readyset starts using the TopK operator automatically when you upgrade.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://readyset.io/blog/topk-generally-available" rel="noopener noreferrer"&gt;The full post covers what changed&lt;/a&gt;, how the buffer tuning works, and when to touch the defaults. &lt;/p&gt;

</description>
      <category>database</category>
      <category>postgres</category>
      <category>mysql</category>
      <category>performance</category>
    </item>
    <item>
      <title>Readyset Internals: The left-right pattern: lock-free cache</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Mon, 13 Jul 2026 14:13:28 +0000</pubDate>
      <link>https://dev.to/readyset/readyset-internals-the-left-right-pattern-lock-free-cache-2go4</link>
      <guid>https://dev.to/readyset/readyset-internals-the-left-right-pattern-lock-free-cache-2go4</guid>
      <description>&lt;p&gt;One of the questions we get asked most often: how does Readyset serve cached reads without ever taking a lock?&lt;/p&gt;

&lt;p&gt;The answer is a pattern called left-right. Instead of making readers and writers compete over the same data, Readyset keeps two copies. Readers use one while writes happen on the other, then a single atomic pointer flip makes the updated data visible. Readers never wait on writes, and writes never block readers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://readyset.io/blog/lock-free-cache-reads-left-right" rel="noopener noreferrer"&gt;Full writeup with benchmarks and an honest look at the tradeoffs here.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flp4d4fsyymu3getnjp9b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flp4d4fsyymu3getnjp9b.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>mysql</category>
      <category>postgres</category>
    </item>
    <item>
      <title>June Product Update</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Thu, 02 Jul 2026 17:43:49 +0000</pubDate>
      <link>https://dev.to/readyset/june-product-update-5dn8</link>
      <guid>https://dev.to/readyset/june-product-update-5dn8</guid>
      <description>&lt;p&gt;We packed a lot into June! &lt;/p&gt;

&lt;p&gt;We took the stage (and the exhibition floor) at &lt;a href="https://rio.websummit.com/" rel="noopener noreferrer"&gt;Web Summit Rio&lt;/a&gt;, where &lt;a href="https://www.linkedin.com/in/gautamvsg/" rel="noopener noreferrer"&gt;Gautam Gopinadhan&lt;/a&gt; gave a talk on a question more teams are running into: AI is querying your database. Are you in control?&lt;/p&gt;

&lt;p&gt;We also shipped new caching and reliability improvements, published new technical content on our MCP server and on caching Supabase with Readyset over IPv6, and more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://readyset.io/blog/june-2026-product-update" rel="noopener noreferrer"&gt;Catch up on everything from June!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fge0qczvuh2yzxhx04dls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fge0qczvuh2yzxhx04dls.png" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>ai</category>
      <category>mysql</category>
      <category>postgres</category>
    </item>
    <item>
      <title>The Real Cost of Read Replicas (and When They Stop Paying Off)</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Wed, 01 Jul 2026 14:26:29 +0000</pubDate>
      <link>https://dev.to/readyset/the-real-cost-of-read-replicas-and-when-they-stop-paying-off-1mai</link>
      <guid>https://dev.to/readyset/the-real-cost-of-read-replicas-and-when-they-stop-paying-off-1mai</guid>
      <description>&lt;p&gt;There is a reflex every engineering team develops once read traffic starts climbing: the primary is sweating, so you spin up another read replica.&lt;/p&gt;

&lt;p&gt;It works, but it does not actually reduce the work being done. It spreads the same expensive queries across more copies of the same database, each one independently recomputing identical results. Costs keep climbing, replication large becomes another operational concern, and every replica adds more infrastructure to manage. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://readyset.io/blog/real-cost-of-read-replicas" rel="noopener noreferrer"&gt;We wrote about where replicas earn their keep, where they stop paying off, and what it looked like when Lemit hit a hard ceiling at 13,000 reads per second on fully maxed out hardware before pushing past 109,000 QPS by caching repetitive reads instead of adding more replicas.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7r7cqxld71s5v2yfy3nj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7r7cqxld71s5v2yfy3nj.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>postgres</category>
      <category>mysql</category>
    </item>
    <item>
      <title>Caching Supabase with Readyset over IPv6: the AWS and Docker pieces that have to line up</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Mon, 29 Jun 2026 14:06:26 +0000</pubDate>
      <link>https://dev.to/readyset/caching-supabase-with-readyset-over-ipv6-the-aws-and-docker-pieces-that-have-to-line-up-3oml</link>
      <guid>https://dev.to/readyset/caching-supabase-with-readyset-over-ipv6-the-aws-and-docker-pieces-that-have-to-line-up-3oml</guid>
      <description>&lt;p&gt;Readyset has been a great solution for Supabase users to reduce read latency without changing application code.&lt;/p&gt;

&lt;p&gt;With the introduction of Shallow Cache, we've made it easier than ever to get started with your Supabase project within minutes. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://readyset.io/blog/caching-supabase-with-readyset-over-ipv6-the-aws-and-docker-pieces-that-have-to-line-up" rel="noopener noreferrer"&gt;This guide walks you through the simple steps needed to get your AWS networking environment setup end-to-end with Supabase in the default IPv6 mode.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>supabase</category>
      <category>postgres</category>
      <category>mysql</category>
      <category>database</category>
    </item>
    <item>
      <title>Your AI now speaks Readyset: announcing the MCP server</title>
      <dc:creator>ReadySet</dc:creator>
      <pubDate>Mon, 22 Jun 2026 14:10:24 +0000</pubDate>
      <link>https://dev.to/readyset/your-ai-now-speaks-readyset-announcing-the-mcp-server-1h2g</link>
      <guid>https://dev.to/readyset/your-ai-now-speaks-readyset-announcing-the-mcp-server-1h2g</guid>
      <description>&lt;p&gt;Your "copy SQL into a chat window, paste the result back" loop is over.&lt;/p&gt;

&lt;p&gt;Readyset now supports MCP natively, which means Claude, Cursor, Windsurf, and any other MCP-aware agent can connect directly to your Readyset instance, inspect proxied queries, see what is cacheable, and create or drop caches without you having to do it by hand!&lt;/p&gt;

&lt;p&gt;We shipped two transports because teams run databases in different ways. A stdio binary that runs on your laptop with the credentials you already have, and an embedded HTTP endpoint built into the Readyset server for shared agents, CI jobs, and multi-user setups with scoped, revocable tokens.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://readyset.io/blog/your-ai-now-speaks-readyset-announcing-the-mcp-server/" rel="noopener noreferrer"&gt;The decision to let an AI touch your database should belong to you. Both transports were built with that in mind. &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkngjdxdss2zxgzcbzvhr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkngjdxdss2zxgzcbzvhr.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>postgres</category>
      <category>mysql</category>
    </item>
  </channel>
</rss>
