Базоёбы-базоёбы,
Какой QPS (queries per second) на запись
UPDATE set count = count + 15 WHERE user = 888 AND day = 9;
выдержит ваша базуня, если мы создадим табличку вида:
// (имя поля : условный тип, ...)
(user : int64, day : int32, count : int64)
user -- ID юзера. Некий хеш или ID или что угодно 64-битное. Юзеров много, например; т.е. в сыплющихся запросов это поле варьируется между 0 и 2 в степени 64.
day -- номер дня с начала эпохи. Ну можно думать что это "timestamp / (60*60*24)". Короче сегодня день 1, завтра день 2 и т.п.
count -- число чего-то, что этот юзер сделал, например число подтягиваний.
Бизнес-логика приложения: юзер подтянулся 15 раз сегодня - добавил 15. Ещё сегодня 30 - добавил 30. Потом может просмотреть в какой день сколько было в сумме подтягиваний (в данный день - 45).
Можно конечно добавлять каждую пачку подтягиваний как новую строку, а потом агрегировать на селектах (sum(count)), но давайте пока не плодить строчки, а пытаться их апдейтить.
Но это не UPDATE, это UPSERT, т.е. если данного (user,day) в базе нет, он должен вставиться с числом count = 0.
Задача сделать это максимально быстро.
Сколько таких запросов на запись в секунду ваша любимая базуня сможет непрерывно без перерывов на обед держать?
Каких максимумов можно достичь на известных вам базунях?
Пасибо. Не хворайте.
В одноэсе это регистр оборотов.