Удаление старых (устаревших) данных из таблиц для уменьшения размера базы

slamer3000

Новичок
Удаление старых (устаревших) данных из таблиц для уменьшения размера базы

Такой пример, с которым недавно столкнулся:
Есть таблица статистики. В неё постоянно добавляются записи.
Черз 2-3 года она скорее всего вырастет в 300 гигабайт.
Есть угроза того, что тупо закончится винчестер. Не говоря уже о том, что добавление работает всё медленнее и медленнее.
Начальник поставил задачу разработать алгоритм "удаления" устаревших данных. Например, каких-то записей, которые уже реально не нужны (по крону).
У меня есть пару задумок по этому поводу:
1) Для таблиц, где цифровые статистические данные (например, количество кликов или платежей. Один клик - одна запись, один платёж с опр. суммой - одна запись)
считать количество или сумму для всех записей, дата которых меньше заданной (time < now() - 2 года) и записывать её в поле с датой = now() - 2 года. И удалять эти записи.
2) Для таблиц, где надо удалять записи (например, старые, неактивные регистрации юзеров) - удалять все с датой меньше заданной.
3) Для таблиц, для которых важно, чтобы данные сохранялись (например, файлы, которые давно уже никто не качает, как на iFolder'е), перемещать их в отдельную
базу на отдельный сервер с кучей винтов и удалять эти записи из главной базы. Такие записи не будут участвовать в поиске, в статистике, но при необходимости к ним можно будет обратиться по id в другую базу (в отдельной таблице хранить id перемещённых файлов) и вернуть запись назад в основную базу.

У кого ещё есть идеи? Кто сталкивался с такой проблемой и как лучше всего это спланировать (избавление от ненужных записей)?
Важен сам подход. Рад буду услышать мнения экспертов.
 

x-yuri

Новичок
имхо стоит исходить из самого простого варианта. А оптимизировать только, если знаешь, каков будет выигрыш. Посмотри, за счет чего в основном растет бд и уже для данной таблиц(ы) думай, как ограничить ее(их) рост

-~{}~ 20.01.09 19:35:

и прикинь, что ты выиграешь, в случае оптимизации
 

esergey

Новичок
Ты знаешь, чтобы тебе что-то подсказать, надо бы структуру твоей базы увидеть. Ты в начале сам ответил - удалять ненужные записи.

Я когда разрабатывал новостной сайт, беспокоился чтобы он не перегрузился новостями :) чтоб не сильно большой был. Так создал методу. В базу записывается время обращения к каждой статье, если к статье не обращались более полугода, я ее удаляю.
 
Сверху