Результаты запроса Redshift неверны перед VACUUM
Когда Redshift использует индекс для выполнения запроса (скажем, подсчитывает), исключает ли это подсчет строк в несортированном регионе?
Я скопировал много данных с помощью команды COPY, но не сделал VACUUM
таблица послесловий. При выполнении моего запроса (включая объединения с несколькими таблицами) результаты запроса были неправильными - вновь скопированные строки в несортированном регионе не учитывались.
Затем, после очистки таблицы, запрос начал возвращать правильные результаты. Это ожидаемое поведение, или это ошибка, представленная Amazon?
1 ответ
Пылесос не будет иметь никакого эффекта на COPYed строки, которые являются эффективно вставками. Вакуум физически удаляет строки, ранее удаленные с помощью SQL delete
оператор, который помечает только строки как удаленные, поэтому они не участвуют в последующих запросах, но по-прежнему занимают место на диске.
Redshift - в конечном итоге согласованная база данных, поэтому даже если ваш COPY
Команда выполнена, строки могут быть еще не видны для запросов.
Запуск вакуума в основном дефрагментация, которая требует реорганизации всех рядов. Это (вероятно) приводит к приведению таблицы в согласованное состояние, то есть все строки видны запросам.