Есть сервер, который принимает ~1000 хитов в секунду, которые превращаются в 3 шт. INSERT INTO ... ON DUPLICATE KEY UPDATE count = count + 1
Раз в сутки по таблице проходится агрегатор с запросом вида INSERT INTO stat SELECT ... from ... where period between ? and ? GROUP BY user, model_id
На innodb нагрузку тянули, в целом было норм, но - место на диске он ел как не в себя и при удалении старых записей требовалось оптимайзить таблицу для реальной очистки места на диске.
После перехода на tokudb проблема с диском ушла, но запросы стали объективно медленее работать и памяти на агрегацию уже стало не хватать.
Какие варианты лучшие для такого типа нагрузки?
VividCortex для похожей нагрузки использует InnoDB + native partitioning. Только у них нагрузка на шард в 100 раз выше 😉 https://www.slideshare.net/vividcortex/vividcortex-building-a-timeseries-database-in-mysql
и не очень понятно, что значит "место на диске он ел как не в себя". purge что ли не справлялся с нагрузкой?
Обсуждают сегодня