В Greenplum строки распределяются по сегментам; изменения учитывают MVCC и тип хранения. DELETE обычно не уменьшает файл сразу, а TRUNCATE очищает таблицу целиком.
Что физически происходит при INSERT, UPDATE и DELETE в Greenplum; почему после DELETE место на диске не освобождается и чем DELETE отличается от TRUNCATE?
В Greenplum строки распределяются по сегментам; изменения учитывают MVCC и тип хранения. DELETE обычно не уменьшает файл сразу, а TRUNCATE очищает таблицу целиком.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В Greenplum строки распределяются по сегментам; изменения учитывают MVCC и тип хранения. DELETE обычно не уменьшает файл сразу, а TRUNCATE очищает таблицу целиком.
Для heap-таблиц UPDATE создаёт новую версию строки, а DELETE делает старую недоступной новым снимкам. Освободить место для повторного использования помогает VACUUM; возврат места ОС обычно требует более тяжёлого обслуживания. Для append-optimized хранения механизм очистки и компактации отличается.
TRUNCATE не удаляет строки по условию, а очищает всю таблицу или выбранные поддерживаемые объекты с соответствующими блокировками. Точные детали проверяют по версии Greenplum и способу хранения, а не переносят безусловно из PostgreSQL.
Источник: knowledge.broadcom.com, knowledge.broadcom.com.