ਪੜਾਵਾਂ ਵਿੱਚ scale ਕਰੋ: ਪਹਿਲਾਂ reads ਲਈ read replicas + caching, ਫਿਰ writes ਲਈ sharding (Vitess) — ਅਤੇ ਬਾਕੀ ਸਭ ਤੋਂ ਪਹਿਲਾਂ connection pooling ਜੋੜੋ, ਕਿਉਂਕਿ ਇਹ ਸਭ ਤੋਂ ਸਸਤਾ 10x ਹੈ। Reads ਅਤੇ writes ਵੱਖ-ਵੱਖ ਢੰਗ ਨਾਲ scale ਕਰਦੇ ਹਨ, ਇਸ ਲਈ ਪਹਿਲੇ ਦਿਨ sharding ਵੱਲ ਹੱਥ ਨਾ ਵਧਾਓ।
┌─▶ 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
Step 0: connection pooling
ਹਰ MySQL connection ਨੂੰ memory ਅਤੇ ਇੱਕ thread ਦੀ ਕੀਮਤ ਪੈਂਦੀ ਹੈ। 100x traffic ਉੱਤੇ ਤੁਸੀਂ CPU ਤੋਂ ਬਹੁਤ ਪਹਿਲਾਂ ਖਤਮ ਕਰ ਦਿਓਗੇ। ਜਾਂ ਵਰਗਾ ਇੱਕ pooler ਹਜ਼ਾਰਾਂ app connections ਨੂੰ ਕੁਝ ਸੌ DB connections ਉੱਤੇ multiplex ਕਰਦਾ ਹੈ। ਇਹ ਇੱਕ config change ਹੈ, rearchitecture ਨਹੀਂ — ਇਸਨੂੰ ਪਹਿਲਾਂ ਕਰੋ।
