Задать вопрос
@Andrey-2

Что лучше сделать при удалении большого количества записей в таблице БД?

Добрый день.
Вопрос наверное заезженный, но можете помочь советом.
Есть таблица с сессиями в которых очень много записей(~10 000 000), раньше её никто не чистил, а сейчас проблема с размером БД.
Хотел удалить, но вспомнил, что при удалении большого кол-ва записей могут быть проблемы (дефрагментация и тп). Удалить нужно не всё, только старше 1 года(т.е. много)

Как лучше всего поступить?
1) Удалить с помощью DELETE (как потом привести к нормальному виду если запросы потом будут медленными, а производительность критична т.к. к ней много обращений)
2) Перенести за последний год записи во временную таблицу, эту таблицу удалить и создать заново(как быть со связями)
3) Перезаписывать?
4) Оставить как есть (Не поможет, место на диске ограниченно)

З.ы. Как работают с таким большим кол-вом записей?
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 2
AndyKorg
@AndyKorg
Кнопконажиматель и припоерасплавлятель
1 Сделать buckup БД
2 Удалить ненужные записи (тут только delete, т.к. truncate уничтожает все записи, но быстро) Иногда приходится кусками, отдельными транзакциями. Зависит от нагрузки на БД.
3 Обновить статистику
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Ищите что то типа bulk delete. Потом пошринкайте базу. Возможно стоит подумать над изменением модели на simple. Ну и да подумайте над переносом этой таблички в тот же редис. Это наиболее правильное решение для сессий
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы