Cloud Parts

PlanetScale

Managed MySQL on Vitess and managed Postgres, with schema changes shipped through branches and deploy requests.

Type
Commercial product
Made by
PlanetScale, Inc.
License
Proprietary (built on Vitess, Apache 2.0; the pscale CLI is Apache 2.0)
Facts checked
6 October 2026

What it is

PlanetScale runs databases for you on AWS and Google Cloud, in three flavours. Vitess databases speak the MySQL protocol: your app connects to VTGate proxies, which work out which MySQL 8 instances hold the rows and send the query there. Each MySQL instance is paired with a vttablet process. Tables can be split across many such shards by a sharding key that Vitess calls a vindex, while the app still sees one database. Postgres databases are plain Postgres run by PlanetScale’s own operator, with PgBouncer for connection pooling and extensions such as pgvector, PostGIS and TimescaleDB. Neki, in platform preview since September 2026, puts Postgres shards behind routers that speak the Postgres wire protocol. A highly available cluster is a primary and two replicas across three availability zones, on network-attached disks (Amazon EBS or Google Persistent Disk) that can grow automatically, or on Metal: local NVMe drives that you size up front.

Schema changes follow a code-review workflow. A branch is an isolated copy of the database. On Vitess you change the schema on a development branch, open a deploy request, and PlanetScale applies it online by building a ghost table with the new schema, keeping it in sync, then swapping it in; for 30 minutes you can revert without losing writes made in between. There has been no free plan since April 2024. Pricing is by resources: a monthly price per cluster size, prorated to the millisecond, plus storage, backups and egress. In AWS us-east-1 a single-node Postgres starts at $5 a month, a highly available Postgres cluster at $15, a Vitess cluster at $39 and Metal at $50. Enterprise customers can run it single-tenant or inside their own AWS or GCP account.

Why teams pick it

  • Horizontal sharding for MySQL from Vitess, the system YouTube built and Slack, GitHub and Square adopted, behind one connection string
  • Schema changes go through reviewed deploy requests, run online without locking tables, and can be undone for 30 minutes
  • Metal’s local NVMe drives give unlimited IOPS with storage included in the cluster price; Postgres on Metal starts at $50 a month
  • Plain resource pricing with a public price list, 12 AWS and 7 GCP regions, and an option to run in your own cloud account

Watch out for

  • No free tier since the Hobby plan was retired on 8 April 2024, and new accounts are capped at PS-160 and M-320 sizes until they have paid a $100 invoice
  • Vitess isn’t all of MySQL: no stored procedures, triggers or events, no LOCK TABLES or LOAD DATA INFILE, InnoDB only, every table needs a unique key, and no binlog replication to outside databases
  • Postgres branching lags Vitess: new branches start empty or from a backup, there are no deploy requests, and schema changes are copied to production by hand
  • Metal storage doesn’t grow on its own: the database turns read-only when 6 GB is left, and on GCP Metal starts at $559 a month
  • Network-attached storage is billed per instance, so a highly available Vitess cluster pays $1.50 per GB a month beyond the 10 GB included

Alternatives

What all relational databases have in common →
Alibaba Cloud PolarDBCommercialAlibaba Cloud’s cloud-native relational databases: MySQL- and PostgreSQL-compatible clusters whose compute nodes share one copy of the data on distributed storage, plus PolarDB-X, a distributed MySQL-compatible edition.CedarDBCommercialA PostgreSQL-compatible database rebuilt from scratch at TU Munich, running transactions and analytics on one copy of the data on a single server.Cloudflare D1CommercialCloudflare’s serverless SQL database that speaks SQLite, runs each database inside a Durable Object, and bills by rows read and written rather than by the hour.CloudNativePGOpen sourceA Kubernetes operator that runs highly available PostgreSQL with no Patroni and no StatefulSets: the Kubernetes API itself holds the cluster’s state.CockroachDBCommercialA distributed SQL database that speaks the PostgreSQL wire protocol, replicates every slice of data with Raft and keeps transactions serializable across nodes and regions.MySQLOpen sourceThe long-standing open-source SQL database behind much of the web, built on the InnoDB engine.NeonCommercialServerless Postgres that keeps data in a shared storage layer, so compute can scale to zero and a branch of the database is a pointer, not a copy.PatroniOpen sourceA Python agent beside each Postgres server that elects one primary through etcd, Consul, ZooKeeper or Kubernetes, and fails over when it dies.Percona OperatorsOpen sourceFour free Kubernetes operators from Percona that run its builds of MySQL, PostgreSQL and MongoDB, each using the engine’s own replication and backup tools.PGO (Crunchy Postgres for Kubernetes)Open sourceCrunchy Data’s Postgres operator: Patroni in every pod for failover, pgBackRest for backups, and a declarative `PostgresCluster` resource on top.PostgreSQLOpen sourceThe open-source relational database that most new projects start on, extensible enough to grow into many niches.ScramDBCommercialA brand-new, closed-source database that speaks the PostgreSQL protocol and promises transactions, analytics and vector search on one copy of the data; first builds shipped in summer 2026.SQLiteOpen sourceA complete SQL database in a library and a single file, with no server to run.TursoOpen sourceA from-scratch Rust rewrite of SQLite with concurrent writes, plus libSQL (an open-contribution SQLite fork) and Turso Cloud, which hosts many small databases on S3.VitessOpen sourceA proxy layer, born at YouTube, that shards MySQL across many servers while the app still sees one database.

How it fits with other technologies

Ship a schema change through a branch and a deploy request · bash

# a Vitess (MySQL-compatible) database in Frankfurt; deploy requests need safe migrations
pscale database create shop --engine mysql --region eu-central --cluster-size PS_10 --wait
pscale branch safe-migrations enable shop main

# change the schema on an isolated development branch, not on production
pscale branch create shop add-order-notes --from main --wait
pscale shell shop add-order-notes
#   mysql> ALTER TABLE orders ADD COLUMN notes VARCHAR(500) NULL;

# open a deploy request, review the diff, then apply it online
pscale deploy-request create shop add-order-notes --into main --notes 'Add order notes'
pscale deploy-request diff shop 1
pscale deploy-request deploy shop 1

# changed your mind? revert within 30 minutes without losing new writes
pscale deploy-request revert shop 1

Vitess, Postgres or Neki?#

One account can hold all three. Prices are monthly list prices in AWS us-east-1 from PlanetScale’s pricing page, checked 2026-10-06; other regions differ.

VitessPostgresNeki
What runsMySQL 8 behind VTGate proxiesOne Postgres cluster with PgBouncerPostgres shards behind Neki routers
StatusGenerally available since 2021Generally available since September 2025Platform preview since September 2026
Horizontal shardingYes: you pick a sharding key (vindex) per tableNo: scale up, or move to NekiYes: you pick the shard key in a JSON data topology
Schema changesDeploy requests, applied online, 30-minute revertPlain DDL on each branch; no deploy requestsBuilt-in online workflows
Smallest production clusterPS-10 with two replicas: $39PS-5 single node: $5; with two replicas: $15PS-10 arm64 shard with two replicas: $30, plus routers from $6
Development branchesAbout 1,440 hours a month included, then about $0.014 an hour$5 a month eachBilled as a new branch
Network-attached storage10 GB included, then $0.50 per GB per instance10 GB included, then $0.125 per GB per instance10 GB per instance included; rate varies by region
Metal from$609 (M-160, 110 GiB)$50 (M-10 arm64, 10 GiB)$589 (M-160 arm64, 118 GiB per shard)
  • A highly available cluster has three instances, so storage beyond the included 10 GB costs three times the per-instance rate.
  • Postgres includes 100 GB of egress a month per production branch; beyond that public egress costs $0.06 per GB in us-east-1, and backups beyond twice the disk size cost $0.023 per GB a month.

Network-attached storage or Metal?#

Both run a primary and two replicas across three availability zones. The difference is where each instance keeps its data.

Network-attachedMetal
Where data livesAmazon EBS (gp3) or Google Persistent DiskNVMe drives attached to the server
I/OOn AWS 3,000 IOPS and 125 MiB/s included; more is billedUnlimited IOPS, no extra charge
GrowingStorage can autoscalePick a drive size up front, resize to a bigger drive; read-only at 6 GB free
Storage priceBilled per GB on top of the clusterIncluded in the cluster price
FitsSmall or unpredictable data sizesI/O-heavy or latency-sensitive workloads, large EBS bills

See it in a real stack

No architecture uses PlanetScale yet. Drop it into the playground and wire it up yourself.Open playground →

Worth exploring

Article· April 2026Keeping a Postgres queue healthySimeon Griggs, PlanetScaleWhy a busy queue table fills with dead rows, and how one long query elsewhere can stop vacuum from cleaning them up and slow every dequeue. The diagnosis applies to any Postgres; the fix it ends on, Traffic Control, exists only on PlanetScale.
All resources →
Where it came from2010–2026

In 2010 YouTube’s MySQL primary was running out of room. Read replicas bought time, then writes outgrew one server, so the app itself learned which shard held each row. Vitess moved that routing out of the application into a proxy that sits between the app and MySQL. It has been part of YouTube’s database infrastructure since 2011, grew to tens of thousands of MySQL nodes, and was adopted by Slack, Square and GitHub. It joined the CNCF in 2018 and graduated in November 2019.

Vitess’s co-creators and maintainers founded PlanetScale in 2018. The cloud product launched in beta in May 2021 as “the database for developers”, promising schema changes as easy as deploying code, and became generally available that November with a $50 million Series C.

In March 2024 CEO Sam Lambert chose profitability: the company laid off staff, mainly in sales and marketing, and retired the free Hobby plan. Since then PlanetScale has moved down the stack and across engines, with local NVMe Metal clusters in 2025, managed Postgres the same year, and Neki, sharded Postgres built from scratch rather than forked from Vitess, in 2026.

Why it’s built this way

Build on Vitess instead of a new engine
The founders had already scaled MySQL at YouTube with Vitess, and sharding behind a proxy keeps real MySQL underneath while the app sees one database.
Branches and deploy requests for schema changes
Developers wanted a SQL database without being held back by managing its schema. Treating a schema change like code (a branch, a reviewed diff, a deploy, an undo) aims to make it feel as easy as deploying code.
Online migrations through a ghost table
Copying data into a new table in the background and swapping it in avoids locking the live table, and keeping the old table in sync for 30 minutes makes a revert possible.
Local NVMe drives instead of network storage
Every read and write on a network-attached volume crosses the network, and high IOPS cost extra. Local drives give lower latency and unlimited IOPS, at the price of choosing a drive size up front.

Timeline

  1. 2010

    YouTube creates Vitess to scale its MySQL databases

  2. 2018

    Vitess co-creators found PlanetScale; Vitess joins the CNCF

  3. 2019

    Vitess graduates from the CNCF

  4. 2021

    PlanetScale’s cloud database enters beta in May, generally available in November

  5. 2024

    Layoffs and the end of the free Hobby plan (8 April)

  6. 2025

    Metal (local NVMe) in March; PlanetScale for Postgres in September

  7. 2026

    Neki, sharded Postgres, enters platform preview

Sources29 · facts checked 6 October 2026

Improve this page on GitHub