100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace

How Do You Choose a Sharding Key?

Learn how to pick a sharding key that distributes load evenly and keeps queries single-shard, with real interview-ready examples.

hardQ79 of 228 in Database Est. time: 6 minsLast updated:
Open Code Lab

Expected Interview Answer

A good sharding key is a column with high cardinality and an even, predictable value distribution that matches your query patterns, so writes and reads spread uniformly across shards and most queries can be routed to a single shard without scatter-gather.

The key decides how rows are grouped and where they physically live, so a poor choice creates hot shards that absorb disproportionate traffic while others sit idle. Good candidates avoid monotonically increasing values for hash-friendly workloads, since sequential IDs concentrate new writes on one shard at a time, and instead favor columns like a hashed user ID or tenant ID that both distribute load and appear in most query filters. The choice also determines join and transaction locality: a key aligned with how the application queries data (for example, always filtering by tenant_id) keeps most operations single-shard, while a mismatched key forces expensive cross-shard fan-out for nearly everything.

  • Even write and storage distribution across shards
  • Most queries stay single-shard, avoiding fan-out
  • Reduces risk of hot spots under growth
  • Keeps related rows co-located for locality

AI Mentor Explanation

A national league assigning players to regional academies purely by last-name initial would flood the "S" academy with disproportionately many surnames from one region, leaving others under-used. A smarter key, like a rotating draft number, spreads players evenly and keeps a player's whole training history in one academy for easy lookup. Choosing a sharding key is the same trade-off: you want values spread evenly, and you want the fields you query most often to land on the same shard.

Step-by-Step Explanation

  1. Step 1

    Profile query patterns

    Identify the columns most frequently used to filter or join, since the shard key should keep those queries single-shard.

  2. Step 2

    Check cardinality and skew

    Prefer high-cardinality fields with a roughly uniform value distribution over the expected data volume.

  3. Step 3

    Avoid monotonic keys for hashing

    Sequential IDs or timestamps concentrate new writes on one shard; hash them or pick a naturally distributed field instead.

  4. Step 4

    Validate against growth projections

    Simulate future data volume and access patterns to confirm the key stays balanced as the system scales.

What Interviewer Expects

  • Understanding that key choice affects both distribution and query locality
  • Awareness that sequential keys create write hot spots
  • Ability to weigh cardinality, skew, and query patterns together
  • Recognition that a wrong key is costly to change later

Common Mistakes

  • Picking a key based only on uniqueness, ignoring value distribution
  • Using a monotonically increasing key with hash-unfriendly access patterns
  • Ignoring how the key affects cross-shard joins and transactions
  • Not validating the key choice against realistic production traffic

Best Answer (HR Friendly)

โ€œChoosing a sharding key means finding a column that spreads data evenly across servers and also matches how the application usually queries the data, so most requests only need to touch one shard. Get it wrong, like using a sequential ID, and you end up with one overloaded shard while others sit idle.โ€

Code Example

Comparing a poor key vs a hashed key
-- Poor: sequential order_id concentrates new writes on the last shard
-- shard_index = order_id % 4  -- keeps hammering the newest shard range

-- Better: hash a stable, query-relevant field like customer_id
-- shard_index = hash(customer_id) % 4

SELECT * FROM Orders WHERE customer_id = 4821;
-- routes deterministically to one shard using the hashed customer_id

Follow-up Questions

  • What happens if you choose a low-cardinality shard key?
  • How do you handle queries that do not include the shard key?
  • What is a composite shard key and when would you use one?
  • How costly is it to change a shard key after the system is in production?

MCQ Practice

1. Why is a strictly sequential ID often a poor sharding key for a hash-based scheme?

Sequential values arrive in a tight range at any moment, so hashing or ranging on them still funnels new writes onto the same shard.

2. What should heavily influence sharding key selection besides distribution?

A key aligned with common query filters keeps most operations single-shard, avoiding expensive cross-shard fan-out.

3. What is a symptom of a poorly chosen sharding key?

Uneven value distribution or access patterns cause some shards to absorb disproportionate traffic relative to others.

Flash Cards

What makes a good sharding key? โ€” High cardinality, even distribution, and alignment with common query filters.

Why avoid sequential IDs for hashing? โ€” They concentrate new writes onto a narrow, currently-active range instead of spreading evenly.

What is shard skew? โ€” Uneven distribution of data or traffic across shards caused by a poorly chosen key.

Why does key choice matter for queries? โ€” A key matching common filters keeps most queries single-shard instead of requiring cross-shard fan-out.

1 / 4

Continue Learning