Neki, sharded Postgres, is now available. Learn more
Navigation

Blog


Richard Crowley

On 2025-10-20, there was an incident that affected PlanetScale, initially caused by DNS misconfiguration in one of PlanetScale’s service providers, followed by several hours of capacity constraints and network instability. →


Ben Dicken [@BenjDicken]

Postgres 18 brings a significant improvement to read performance via async I/O and I/O worker threads. Here we compare its performance to Postgres 17. →


Vicent Martí

A new hybrid design for scalable vector indexes and a reference implementation in MySQL →


Ben Dicken [@BenjDicken]

Processes and threads are fundamental abstrations for operating systems. Learn how they work and how they impact database performance in this interactive article. →


Sam Lambert [@samlambert]

Why a lagging client can stall or break failover, and how MySQL’s GTID model avoids it. →


Ben Dicken [@BenjDicken]

Every time you use a computer, the cache is working to ensure your experience is fast. →


Max Englander

The principles and processes we follow for fault tolerance. →


Ben Dicken [@BenjDicken]

Benchmarking Postgres in a transparent, standardized and fair way is challenging. Here, we look at the process of how we did it in-depth →


Vicent Martí

A novel technique for implementing dynamic language interpreters in Go, applied to the Vitess SQL evaluation engine →


Nick Van Wiggeren [@NickVanWig]

Our experience running AWS EBS at scale for critical workloads →


Ben Dicken [@BenjDicken]

Take an interactive journey through the history of IO devices, and learn how IO device latency affects performance. →


Richard Crowley

Learn how PlanetScale Metal was built and how we ensured it is safe. →


Rafer Hazen

Our experience upgrading the Query Insights database to PlanetScale Metal →


Manan Gupta

Learn how PlanetScale keeps its private fork of Vitess up-to-date with OSS →


Ben Dicken [@BenjDicken]

Learn about the database sharding scaling pattern in this interactive blog. →


Shlomi Noach

Design considerations for implementing a database throttler →


Shlomi Noach

Design considerations for implementing a database throttler with a comparison of singular vs distributed throttler deployments. →


Ben Dicken [@BenjDicken]

B-trees are used by many modern DBMSs. Learn how they work, how databases use them, and how your choice of primary key can affect index performance. →


Shlomi Noach

Learn about some design considerations for implementing a database throttler. →


Ben Dicken [@BenjDicken]

For big databases, IOPS and throughput can become a bottleneck in database performance. Learn how sharding helps scale out IOPS and throughput beyond the limitations of a single server. →


Matt Lord

Data migrations are a critical part of the database lifecycle, and are sometimes necessary for version upgrades, sharding, or moving to a new platform. In many cases, migrations are painful and error-prone. In this article, we walk through how migrations are performed at PlanetScale, and offer advice on how to improve the migration experience. →


Ben Dicken [@BenjDicken]

Sharding a database comes with many benefits: Scalability, failure isolation, write throughput, and more. However, one of the lesser-known benefits comes from improved backups and restore performance. →


Matt Lord

Learn the basics of Change Data Capture (CDC) and how to leverage Vitess VStream API to build data pipelines. →


Shlomi Noach

Learn about the options for running non-blocking schema changes natively to MySQL, using Vitess, or other tools →


Andres Taylor

The Vitess query planner takes multiple passes over a query plan to optimize it as much as possible before execution. A recent tricky bug report led to an improvement in how the optimizer functions. →