Перейти к содержимому
Последнее обновление

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
PARTITIONSDoris определяет изменившиеся партиции материализованного представления и пересчитывает их
COMPLETEПринудительно пересчитывает все данные материализованного представления без проверки синхронизации партиций с базовыми таблицами
AUTODoris автоматически выбирает доступный способ. Для материализованных представлений, поддерживающих 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;