Не пишите каждый голос напрямую в строку базы данных — буферизуйте записи, шардируйте счётчики и принимайте eventual-подсчёт. 5 млн голосов за 10 минут — это в среднем ~8 300 голосов/с, с пиками намного выше (момент прямого эфира может дать 10-кратный всплеск). Трюк в том, чтобы превратить обновление одной горячей строки во множество независимых параллельных инкрементов.
Client ─▶ Edge/API ─▶ Kafka (vote events) ─▶ Consumers ─┬─▶ Dedup store (SET one-vote)
(durable buffer) └─▶ Sharded counters (INCR N shards)
│
Redis/Aggregator ◀── periodic sum of shards ──────────────────────┘
│
└─▶ Read replica / CDN cache ─▶ Live tally to clients
