მასშტაბირება ეტაპებად: read replica-ები + caching read-ებისთვის ჯერ, შემდეგ sharding (Vitess) write-ებისთვის — და დაამატეთ connection pooling ყველაფრამდე, რადგან ეს ყველაზე იაფი 10x-ია. read და write სხვადასხვაგვარად მასშტაბირდება, ამიტომ ნუ მიდიხართ 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 მეხსიერებას და thread-ს ხარჯავს. 100x ტრაფიკზე -ს CPU-ზე დიდი ხნით ადრე ამოწურავთ. pooler-ი, როგორიც ან -ია, ათასობით app connection-ს რამდენიმე ასეულ DB connection-ზე multiplex-ს. ეს config ცვლილებაა, არა rearchitecture — გააკეთეთ ჯერ.
