Sobes.tech
Назад к вопросам
Junior — Middle
66

Как отличается использование дискового пространства при выполнении команд DELETE и TRUNCATE в базе данных?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Команды DELETE и TRUNCATE в базе данных отличаются по работе с дисковым пространством:

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

  • TRUNCATE — это более быстрая операция, которая удаляет все строки из таблицы целиком, обычно освобождая дисковое пространство сразу (в зависимости от СУБД). TRUNCATE не логирует удаление каждой строки, а просто сбрасывает данные, что экономит ресурсы.

Итого, TRUNCATE эффективнее по использованию дискового пространства и скорости, но менее гибок (нельзя использовать с WHERE, не вызывает триггеры). DELETE более универсален, но может приводить к фрагментации и не освобождать место сразу.