Как отличается использование дискового пространства при выполнении команд DELETE и TRUNCATE в базе данных?
Ответ от нейросети
sobes.tech AI
Команды DELETE и TRUNCATE в базе данных отличаются по работе с дисковым пространством:
-
DELETE удаляет строки по одной, фиксируя каждое удаление в журнале транзакций (лог), что может занимать много времени и места. При этом дисковое пространство обычно не освобождается сразу — удалённые записи помечаются как удалённые, но физически данные остаются, и место может быть переиспользовано.
-
TRUNCATE — это более быстрая операция, которая удаляет все строки из таблицы целиком, обычно освобождая дисковое пространство сразу (в зависимости от СУБД). TRUNCATE не логирует удаление каждой строки, а просто сбрасывает данные, что экономит ресурсы.
Итого, TRUNCATE эффективнее по использованию дискового пространства и скорости, но менее гибок (нельзя использовать с WHERE, не вызывает триггеры). DELETE более универсален, но может приводить к фрагментации и не освобождать место сразу.