Для InnoDB вы, вероятно, будете в порядке с твердотельными накопителями.
20M UPDATEs
в день = 230 / секунду; больше, если есть пики.
Прядильный диск (HDD): 100 операций записи в секунду.
SSD: возможно 1000 / se c.
Пакетная INSERTs
работа быстрее.
Некоторые варианты RAID работают быстрее.
RAID-контроллер с кэшем записи с батарейным питанием работает очень быстро (до тех пор, пока кэш не заполнится).
Для сохранения "лайков" "или" просмотры "или" клики " вероятно лучше хранить счетчики в отдельной таблице от остальных столбцов о странице / продукте / что угодно. Таким образом, обновление счетчика и работа с другими данными будут меньше мешать.
Существует несколько параметров, которые следует учитывать при настройке:
innodb_flush_log_at_trx_commit = 2
(компромисс между скоростью и безопасностью)
sync_binlog = OFF
Объедините несколько действий в одну BEGIN..COMMIT
транзакцию. Но будьте осторожны с тупиками, и так далее. c.
Возможно, вы не имели в виду 100K соединений ? Это огромное количество. Более нескольких десятков запущенных потоков (независимо от количества спящих потоков) - это довольно много.
Другой подход к подсчету кликов состоит не в том, чтобы записывать их в реальном времени, а в том, чтобы очищать журнал веб-сервера, скажем, каждый час Создайте отдельный процесс для подсчета всех кликов за час (или каждые 5 минут или что-то еще) в одно число для подачи в UPDATE
. Это будет больше работы для отдельного сервера, но очень мало усилий для базы данных.