План A:
Слишком поздно делать это, но PARTITIONing
- отличный инструмент для получения данных из таблицы.
Я говорю «слишком поздно», потому что для добавления разбиения потребуется достаточно места для создания копии уже большой таблицы.И у вас не так много места на диске?
Если таблица была разбита на год, квартал или месяц, вы могли бы
- Каждый период "Экспортировать табличное пространство", чтобы удалитьсамый старый из схемы секционирования.
- Это табличное пространство будет отдельной таблицей;Вы можете скопировать / dump / что угодно, затем сбросить его.
Примерно в то же время вы создадите новый раздел для получения новых данных.
(я бы оставил двапроцессы разделяются так, что вы можете растянуть больше 5 лет или сократить меньше 5 с минимальными дополнительными усилиями.)
Преимущество этого метода заключается в том, что при обработке практически не происходит воздействия на большой стол.
Дополнительное преимущество разбиения: вы действительно можете вернуть место в ОС (при условии, что у вас есть innodb_file_per_table=ON
).
План B:
Посмотрите на то, что выделать с oooold данными.Только несколько вещей?Возможно, с участием суммирования?Итак ...
- Не архивировать старые данные.
- Суммируйте подлежащие удалению данные в новые таблицы.Поскольку они будут, вероятно, одной десятой размера, вы можете держать их онлайн «навсегда».