REFRESH MATERIALIZED VIEW
Описание
Этот оператор используется для ручного обновления указанного асинхронного материализованного представления. Задача обновления выполняется асинхронно; проверить её статус можно с помощью tasks("type"="mv").
Синтаксис
REFRESH MATERIALIZED VIEW <mv_name>
{
PARTITIONS (<partition_name> [, <partition_name> [, ... ] ])
| COMPLETE
| AUTO
| PARTITIONS [FALLBACK]
| INCREMENTAL [FALLBACK]
| INCREMENTAL WITH DRY RUN [LIMIT <limit> [OFFSET <offset>]]
}
Чтобы просмотреть план обновления без его выполнения:
EXPLAIN REFRESH MATERIALIZED VIEW <mv_name> INCREMENTAL [WITH ALL STREAMS]
EXPLAIN REFRESH MATERIALIZED VIEW <mv_name> COMPLETE
Обязательные параметры
1. <mv_name>
Задаёт имя материализованного представления.
2. Способ обновления
| Способ обновления | Описание |
|---|---|
INCREMENTAL | Использует Incremental View Maintenance (IVM) для обработки изменений на уровне строк в базовых таблицах между двумя обновлениями. Применяется только к материализованным представлениям, созданным с включённым IVM |
PARTITIONS | Doris определяет изменившиеся партиции материализованного представления и пересчитывает их |
COMPLETE | Принудительно пересчитывает все данные материализованного представления без проверки синхронизации партиций с базовыми таблицами |
AUTO | Doris автоматически выбирает доступный способ. Для материализованных представлений, поддерживающих IVM, последовательно пробует IVM, обновление партиций и полное обновление |
PARTITIONS (<partition_name>, ...) | Принудительно обновляет указанные партиции материализованного представления без проверки их синхронизации с базовыми таблицами |
Необязательные параметры
1. FALLBACK
Разрешает при этом обновлении переходить к резервному способу, если предпочтительный способ невозможно безопасно выполнить:
INCREMENTAL FALLBACKпо умолчанию последовательно пробует IVM, обновление партиций и полное обновление. При некоторых ошибках IVM выполняется переход сразу к полному обновлению.PARTITIONS FALLBACKпереходит к полному обновлению, если обновление партиций невозможно выполнить.INCREMENTALилиPARTITIONSбезFALLBACKзадаёт строгий режим: если предпочтительный способ завершается ошибкой, задача также завершается ошибкой.
2. WITH DRY RUN
Применяется только к INCREMENTAL. Выполняет дельта-запрос следующего обновления IVM и возвращает строки, которые были бы записаны, не изменяя данные материализованного представления, не сдвигая смещения внутренних Table Stream и не изменяя метаданные IVM.
Используйте LIMIT и OFFSET, чтобы ограничить возвращаемый результат. Результат включает как столбцы с бизнес-данными, так и внутренние столбцы, используемые IVM.
3. WITH ALL STREAMS
Применяется только к EXPLAIN ... INCREMENTAL. По умолчанию план включает только внутренние Streams, в которых на данный момент есть необработанные изменения; с этим параметром в план также включаются Streams, изменения из которых уже полностью обработаны. Это упрощает просмотр полной структуры дельта-плана для нескольких таблиц.
Требования к правам доступа
Пользователи, выполняющие эту SQL-команду, должны обладать как минимум следующими правами:
| Право | Объект | Примечания |
|---|---|---|
| ALTER_PRIV | Материализованное представление | REFRESH является операцией ALTER над материализованным представлением |
Примечания по использованию
INCREMENTALдоступен начиная с Doris 5.0.0 и в настоящее время является экспериментальной возможностью. Предварительные условия, поддерживаемые сценарии, причины перехода к резервным способам и требования к базовому состоянию описаны в разделе Incremental View Maintenance (IVM).- Материализованное представление с IVM не поддерживает принудительное обновление отдельных партиций с помощью
PARTITIONS (<partition_name>, ...). Для обновления партиций используйтеPARTITIONSбез списка партиций, а для полного обновления —COMPLETE. - Если обновление в строгом режиме
INCREMENTALзавершается ошибкой, данные материализованного представления не изменяются, а смещения обработки внутренних Streams не сдвигаются. - Для обычных асинхронных материализованных представлений на внешних таблицах, изменения версий которых невозможно обнаружить, указывайте
COMPLETEили явно задавайте имена партиций. - Ни
EXPLAIN, ниWITH DRY RUNне изменяют сохранённое состояние.
Примеры
Инкрементальное обновление с IVM в строгом режиме:
REFRESH MATERIALIZED VIEW mv1 INCREMENTAL;
Разрешение перехода к резервному способу при ошибке инкрементального обновления:
REFRESH MATERIALIZED VIEW mv1 INCREMENTAL FALLBACK;
Предварительный просмотр до 100 строк, которые будут записаны при следующем инкрементальном обновлении:
REFRESH MATERIALIZED VIEW mv1 INCREMENTAL WITH DRY RUN LIMIT 100;
Просмотр полного дельта-плана IVM:
EXPLAIN REFRESH MATERIALIZED VIEW mv1 INCREMENTAL WITH ALL STREAMS;
Автоматическое определение и обновление изменившихся партиций средствами Doris:
REFRESH MATERIALIZED VIEW mv1 PARTITIONS FALLBACK;
Обновление указанных партиций:
REFRESH MATERIALIZED VIEW mv1 PARTITIONS (p_19950801_19950901, p_19950901_19951001);
Принудительное обновление всех данных:
REFRESH MATERIALIZED VIEW mv1 COMPLETE;