Имеется таблица с более чем 1 миллиона записей, каждый день +100к примерно.
Каждая запись является уникальной записью действия уникального хоста.
Есть идея. Раз в день запускать скрипт, который будет переносить (рассчитывать, формировать) данные с таблицы с 1 миллионом записей, в новую, где кол-во строк в день будет уменьшено до 3000+ (на каждого пользователя).
Как лучше это реализовать, что бы не убить БД.
П.С. Но таким образом информация уже не будет обновлятся в реальном времени, что большой минус.
sim3x, Да, чем больше записей, тем медленнее все работает (т.е. дольше вопросы выполняются) и при большой нагрузке 502 ошибка. Чищу БД раз в месяц от старых данных, так норм.
Партиционирование или шардинг должны помочь. Грубо говоря, задача - сделать отдельные таблицы для разных хостов или действий и в зависимости от значения выбранного параметра для разделения добавлять запись в соответствующую таблицу. Партиционирование встроено в MySQL, но имеет свои ограничения. А шардинг делается на уровне скриптов. Плюс последнего - можно писать не только в разные таблицы, но и в разные БД даже на разных серверах (при высокой нагрузке так можно обеспечить масштабирование).