مراحل میں 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
قدم 0: connection pooling
ہر MySQL connection memory اور ایک thread خرچ کرتا ہے۔ 100 گنا traffic پر آپ CPU سے بہت پہلے ختم کر دیں گے۔ یا جیسا ایک pooler ہزاروں app connections کو چند سو DB connections پر multiplex کرتا ہے۔ یہ ایک config تبدیلی ہے، rearchitecture نہیں — اسے پہلے کریں۔
