Команда delete не сбрасывает HWM до нуля. HWM остается на прежнем уровне.
Получается, что в таблице нет данных, но HWM находится "на 3х метрах от земли". И СУБД нужно дойти именно до неё при full table scan.
Относительно нашего примера, как будто в таблице все еще оооочень много строк.
Наверное, немного сумбурное объяснение получилось.
Далее, интервьюер обычно задает вопросы:
1. Как нужно удалять данные, чтобы избежать этой ситуации?
Для полного удаления данных используется DDL-команда truncate (усечение), она как раз сбрасывает hwm на “уровень земли”. При этом молниеносно удаляет данные.
2. Как можно сбросить HWM?
Способов несколько. Тот же truncate, если данных нет. Через пересоздание таблицы - CTAS. Через команды перестроения таблицы/управления местом - shrink, move.
В комментариях @ex_electric таки запостил ответ на задачку 😉
Порой, непросто объяснить сложную вещь в одном посте. Дайте, пожалуйста, обратную связь 📊
#решениезадачи #truncate #hwm
Получается, что в таблице нет данных, но HWM находится "на 3х метрах от земли". И СУБД нужно дойти именно до неё при full table scan.
Относительно нашего примера, как будто в таблице все еще оооочень много строк.
Наверное, немного сумбурное объяснение получилось.
Далее, интервьюер обычно задает вопросы:
1. Как нужно удалять данные, чтобы избежать этой ситуации?
Для полного удаления данных используется DDL-команда truncate (усечение), она как раз сбрасывает hwm на “уровень земли”. При этом молниеносно удаляет данные.
2. Как можно сбросить HWM?
Способов несколько. Тот же truncate, если данных нет. Через пересоздание таблицы - CTAS. Через команды перестроения таблицы/управления местом - shrink, move.
В комментариях @ex_electric таки запостил ответ на задачку 😉
Порой, непросто объяснить сложную вещь в одном посте. Дайте, пожалуйста, обратную связь 📊
#решениезадачи #truncate #hwm