Временные блоки в команде обновления делают красное смещение DISK FULL - PullRequest
0 голосов
/ 31 октября 2018

Я новичок в красном смещении и пытаюсь обновить столбец в таблице красного смещения. У меня есть огромная таблица данных и я добавил пустой столбец. Я пытаюсь заполнить этот пустой столбец, присоединив его к другой таблице с помощью команды обновления. Меня беспокоит то, что, несмотря на то, что осталось 291 ГБ свободного места, временные блоки, создаваемые этим оператором UPDATE, вызывают ошибку DISK FULL. Любые решения или предложения приветствуются. Заранее спасибо!

1 Ответ

0 голосов
/ 01 ноября 2018

Не рекомендуется выполнять большую команду UPDATE в таблицах Amazon Redshift.

Причина в том, что обновление хотя бы одного столбца подряд приводит к следующему:

  • Существующая строка будет помечена как Удалено , но все еще будет занимать место на диске, пока таблица не будет VACUUMed
  • Новая строка добавляется в конец хранилища таблицы, которая затем выходит за пределы порядка сортировки

Если вы обновляете каждую строку в таблице, это означает, что хранилище, необходимое для таблицы, в два раза больше , возможно, больше из-за менее эффективного сжатия. Возможно, это то, что занимает ваше дисковое пространство.

Предлагаемый альтернативный метод - выбрать объединенные данные в новую таблицу . Да, это также потребует больше дискового пространства, но будет организовано более эффективно. Затем вы можете удалить исходную таблицу и переименовать новую таблицу в имя старой таблицы.

Некоторые ресурсы:

...