நிலைகளில் அளவிடுங்கள்: முதலில் reads-க்கு read replicas + caching, பிறகு writes-க்கு sharding (Vitess) — மேலும் எல்லாவற்றிற்கும் முன் connection pooling சேர்க்கவும், ஏனெனில் அது மலிவான 10x. Reads மற்றும் writes வேறுபட்டு அளவிடுகின்றன, எனவே முதல் நாளிலேயே 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 மாற்றம், rearchitecture அல்ல — முதலில் அதைச் செய்யுங்கள்.
