Sharding is the process of scaling a database by spreading data across multiple servers, or shards, once a single instance can no longer handle the write volume or dataset size (Last9). It's one of the more consequential architecture decisions a team makes, because unlike most scaling choices, sharding is hard to reverse cleanly once your sharding key is baked into how data is distributed.
The tooling landscape in 2026 has consolidated around a few mature options rather than "roll your own," and the practical failure modes — hotspots and resharding pain — are well enough understood that most of them are avoidable with the right key choice up front.
The tooling landscape: Vitess, Citus, PlanetScale
Vitess is the open-source sharding layer that powers YouTube and other large-scale MySQL deployments, handling petabytes of data and millions of queries per second — few systems have more proven scalability (PlanetScale). The cost of that proven scale is operational complexity: running Vitess requires deploying and managing several components — vtgate, vttablet, vtctld, and supporting infrastructure — and real expertise to operate (PlanetScale).
PlanetScale builds on Vitess to offer horizontal MySQL scaling as a fully serverless experience, where scaling happens automatically and the operational burden of running vtgate/vttablet directly disappears. It emphasizes developer experience — branching for schema changes and non-blocking migrations built in (PlanetScale). Its long-standing limitation was MySQL-only support, but PlanetScale announced a private preview of horizontally sharded PostgreSQL in 2026, citing "overwhelming demand" from teams who wanted the same operational model on Postgres (PlanetScale).
Citus is the equivalent approach for PostgreSQL-native teams — but it carries DDL restrictions and schema change complexity that teams frequently cite as friction, which is part of why PlanetScale's newer Postgres offering has drawn interest even from within the Postgres ecosystem (PlanetScale).
The hotspot problem: sharding's most common failure mode
The single most common way sharding implementations underperform isn't a tooling issue — it's a sharding key choice issue. If the sharding key isn't well chosen, some shards become hotspots, absorbing a disproportionate share of traffic or data, which produces uneven load and can negate the entire benefit of sharding in the first place (DesignGurus).
Range sharding is the classic offender: it creates hotspots when new data clusters at one end of the range, so the shard holding the newest data absorbs essentially all the write traffic while older shards sit comparatively idle (DesignGurus). A sharding key of created_at or an auto-incrementing ID, split into contiguous ranges, is a textbook way to build this problem in from day one — every new row's writes land on the same "current" shard.
Warning
Resharding: complex by nature, not by bad tooling
Resharding — adding or removing shards, or changing the sharding key — is inherently complex, and can cause downtime or performance issues if not handled carefully (Last9). Adding a shard for more capacity requires moving data from existing shards onto the new one; that migration and rebalancing process is slow and error-prone if the database doesn't automate it (Last9).
This is precisely where the choice of managed tooling versus self-managed sharding pays off or doesn't. Vitess and PlanetScale both automate shard splitting and rebalancing as first-class operations — Vitess's vtctld control plane exists specifically to orchestrate this kind of topology change without manual data migration scripts. Teams that hand-roll sharding on top of vanilla Postgres or MySQL, without one of these control planes, are signing up to build (and debug) that migration tooling themselves.
Emerging mitigations in 2026
Two trends are reducing how often teams hit these problems head-on:
- Predictive rebalancing. Some platforms are now using access-pattern analysis to predict hotspots before they cause user-visible latency and proactively rebalance shards ahead of the problem, rather than reacting after a shard saturates (DesignGurus).
- Cloud-managed abstraction. Providers like AWS Aurora and Azure Cosmos DB increasingly hide sharding complexity entirely, automatically distributing data and managing shard topology behind a single logical database interface — trading some control for a large reduction in operational burden (DesignGurus).
Comparison table
| Option | Database | Operational model | Key strength | Key limitation |
|---|---|---|---|---|
| Vitess | MySQL | Self-managed, full control | Proven at YouTube-scale; petabytes, millions of QPS | Requires real platform engineering expertise |
| PlanetScale | MySQL (+ Postgres in 2026 preview) | Fully serverless | Automatic scaling, branching, non-blocking migrations | Postgres support still in private preview |
| Citus | PostgreSQL | Self-managed extension | Native Postgres compatibility | DDL restrictions, schema change friction |
| Aurora / Cosmos DB | Managed cloud DB | Fully abstracted | Sharding complexity hidden entirely | Least control over shard topology/key choice |
A concrete sharding key example
-- Bad: range-sharded on a sequential ID concentrates all new writes
-- on the "latest" shard.
-- shard = id / 1000000
-- Better: hash-based sharding distributes writes evenly regardless
-- of insertion order.
-- shard = hash(user_id) % num_shards
-- Best for multi-tenant systems: composite key keeps a tenant's
-- data co-located (avoiding cross-shard joins) while distributing
-- tenants evenly across shards.
-- shard = hash(tenant_id) % num_shards
Co-locating a tenant's data on one shard (the composite-key pattern) is what most managed platforms recommend for B2B SaaS specifically — it avoids the cross-shard join problem that plain hash sharding on a row-level key introduces.
Actionable takeaway
Before picking a sharding tool, pick a sharding key that won't create hotspots — hash-based or tenant-based keys avoid the range-sharding trap that concentrates write load on one shard. For MySQL workloads, PlanetScale gives you Vitess's proven scalability without needing to operate vtgate/vttablet yourself; reach for raw Vitess only if you have the platform engineering capacity Vitess assumes. For Postgres-native teams, evaluate PlanetScale's 2026 Postgres preview against Citus's DDL restrictions before committing — the operational model, not just the SQL dialect, should drive the decision. And regardless of tool, plan your resharding story before you need it: whichever platform you pick, confirm it automates shard splitting and rebalancing, because doing that migration by hand under production load is where sharding projects actually go wrong.
Sources: PlanetScale — Database Sharding, PlanetScale — The History of Postgres Sharding, Last9 — Database Sharding: How It Works and When You Need It, DesignGurus — Sharding for System Design Interviews
Get new posts as they publish
No spam — just the next post, straight to your inbox.