Флаг на удаление, или удаление записи полностью SQL

Дата публикации:

Помечать флагом — растет база, удалять — понижение производительности (фрагментация, сама операция удаления может оказаться дорогой) и другие проблемы. Что же делать ? Давайте разберемся.

Запсись в БД делается, грубо говоря, в файл. Если запись физически из файла удалить, нужно произвести операцию по усечению файла и его перезаписи, что на многих файловых системах и СУБД — ресурсозатратная (и опасная — вдруг сбой?) операция, поэтому ее стараются избегать.

И что делать со старыми данными ?

Все зависит от поставленных задач вот Вам несколько решений:
1. Если удаление происходит сравнительно редко, т.е. если оверхед на размер базы незначителен — то лучше помечать флагом.
2. Если удаления и создания записей очень частые (в результате база не очень растет), то лучше удалять, плюсы от отсутствия фрагментации может оказаться недостаточным, чтобы перебить рост индексов (кстати и кэш в оперативной памяти будет зря занят).
3. Если и скорость и данные критичны, то лучше помечать флагом и удалять по крону, а чтобы минимизировать вероятность задержек на время обслуживания — разделить таблицу на кластеры (можно ’вручную’ в классе работы с БД) и очищать каждый кусок отдельно, а разделение сделать с целью отделить часто используемые данные от редко используемых.

А что Вы делаете с ненужными данными ?

Оставлять коментарии можно после входа на сайт или регистрации