Результаты запроса Redshift неверны перед VACUUM

Когда Redshift использует индекс для выполнения запроса (скажем, подсчитывает), исключает ли это подсчет строк в несортированном регионе?

Я скопировал много данных с помощью команды COPY, но не сделал VACUUM таблица послесловий. При выполнении моего запроса (включая объединения с несколькими таблицами) результаты запроса были неправильными - вновь скопированные строки в несортированном регионе не учитывались.

Затем, после очистки таблицы, запрос начал возвращать правильные результаты. Это ожидаемое поведение, или это ошибка, представленная Amazon?

1 ответ

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

Redshift - в конечном итоге согласованная база данных, поэтому даже если ваш COPY Команда выполнена, строки могут быть еще не видны для запросов.

Запуск вакуума в основном дефрагментация, которая требует реорганизации всех рядов. Это (вероятно) приводит к приведению таблицы в согласованное состояние, то есть все строки видны запросам.

Другие вопросы по тегам