Шардируйте по ключу, который присутствует почти в каждом запросе и равномерно распределяет нагрузку — обычно хешированный user_id — и с первого дня планируйте ре-шардинг и кросс-шардовые запросы. 1 млрд пользователей не поместится и не будет работать на одном узле; вы распределяете строки по многим базам и направляете каждый запрос на шард, которому они принадлежат.
┌──────────────┐
Request ─▶ Router/│ shard_of(key)│─▶ Shard 0 (users 0–…)
Proxy └──────────────┘ Shard 1
(Vitess) │ Shard 2
└─────────▶ Shard N ← each = its own primary+replicas
Directory/lookup table (which key → which shard) ── for range or resharding
