Škálujte po fázích: nejprve read repliky + caching pro čtení, pak sharding (Vitess) pro zápisy — a před vším ostatním přidejte connection pooling, protože je to nejlevnějších 10×. Čtení a zápisy škálují jinak, takže nesahejte po shardingu první den.
┌─▶ Cache (Redis) ── hit ──▶ return
App ─▶ Pool(PgBouncer/ProxySQL) miss ▼
│ ┌─▶ Read replica 1 ┐
├──── reads ─────────┼─▶ Read replica 2 ┼─ (async replication)
│ └─▶ Read replica N ┘
└──── writes ──▶ Primary ──▶ (later) Vitess shards ─▶ Primary A / Primary B
Krok 0: connection pooling
Každé MySQL spojení stojí paměť a vlákno. Při 100× provozu vyčerpáte dávno před CPU. Pooler jako nebo multiplexuje tisíce aplikačních spojení na pár set DB spojení. Je to změna konfigurace, ne přearchitektování — udělejte to první.
