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

Поддержка функций: Асинхронные материализованные представления

Асинхронные материализованные представления поддерживаются начиная с Selena v2.4. Асинхронные материализованные представления предназначены для ускорения сложных запросов с соединениями или агрегациями на больших таблицах в Selena или в озерах данных. Разница в производительности может быть значительной, когда запрос выполняется часто или достаточно сложен. Кроме того, асинхронные материализованные представления особенно полезны для построения математических моделей на основе вашего хранилища данных.

Этот документ описывает границы компетенции асинхронных материализованных представлений и поддерживаемые версии задействованных функций.

Функции DDL

ФункцияОписаниеПоддерживаемые версии
Auto AnalyzeАвтоматически собирает статистику после создания материализованного представления, чтобы избежать сбоев перезаписи.v3.0+
Random BucketingВключает стратегию случайного разбиения на корзины для материализованных представлений по умолчанию.v3.1+
Deferred RefreshПоддерживает указание того, следует ли обновлять материализованное представление сразу после создания, используя DEFERRED или IMMEDIATE в CREATE MATERIALIZED VIEW.v3.0+
Order ByПоддерживает указание ключа сортировки для материализованных представлений с помощью ORDER BY.v3.1+
Window/CTE/Union/SubqueryПоддерживает использование оконных функций, CTE, Union и подзапросов в материализованных представлениях.v2.5+
ALTER ACTIVEАктивирует недействительные материализованные представления после изменений схемы в базовых таблицах, используя ключевое слово ACTIVE в ALTER MATERIALIZED VIEW.v2.5.7+
v3.0.1+
v3.1+
REFRESH SYNC MODEПоддерживает синхронное выполнение задач обновления материализованных представлений, используя ключевые слова WITH SYNC MODE в REFRESH MATERIALIZED VIEW.v2.5.8+
v3.0.4+
v3.1+
Intermediate Result SpillingПоддерживает включение сброса промежуточных результатов с помощью свойства enable_spill, чтобы избежать OOM во время построения материализованного представления.v3.1+
Resource GroupПоддерживает указание групп ресурсов с помощью свойства resource_group для построения материализованного представления для достижения изоляции ресурсов.v3.1+
Materialized View on ViewПоддерживает создание материализованных представлений на основе логических представлений.v3.1+
Swap Materialized ViewПоддерживает атомарную замену материализованного представления с помощью ключевых слов SWAP WITH в ALTER MATERIALIZED VIEW.v3.1+
CREATE INDEX ON Materialized ViewПоддерживает создание индексов на материализованных представлениях для ускорения точечных запросов.v3.0.7+
v3.1.4+
v3.2+
AUTO ACTIVEАвтоматически активирует недействительные материализованные представления в фоновом режиме с экспоненциальной задержкой, останавливаясь после того, как интервал достигнет 60 минут.v3.1.4+
v3.2+
Backup and RestoreПоддерживает резервное копирование и восстановление материализованных представлений.v3.2+
Object DependenciesПредоставляет системное представление sys.object_dependencies для прояснения отношений зависимости между материализованными представлениями и базовыми таблицами.v3.2+

Переменные

ПеременнаяОписаниеПо умолчаниюПоддерживаемые версии
enable_materialized_view_rewriteВключать ли перезапись запросов материализованных представлений.truev2.5+
enable_materialized_view_for_insertВключать ли перезапись запросов материализованных представлений для операторов INSERT.falsev2.5.18+
v3.0.9+
v3.1.7+
v3.2.2+
materialized_view_rewrite_modeРежим перезаписи запросов материализованных представлений.DEFAULTv3.2+
optimizer_materialized_view_timelimitМаксимальное время, которое может быть использовано для перезаписи запросов материализованных представлений, после чего перезапись запроса прекращается и процесс оптимизатора продолжается.1000v3.1.9+
v3.2.5+
analyze_mvМетод сбора статистики после обновления материализованного представления.SAMPLEv3.0+
enable_materialized_view_plan_cacheВключать ли кэш планов для материализованных представлений. По умолчанию кэшируется 1000 планов материализованных представлений.TRUEv2.5.13+
v3.0.7+
v3.1.4+
v3.2.0+
v3.3.0+
query_including_mv_namesБелый список материализованных представлений, которые могут использоваться для перезаписи запросов.v3.1.11+
v3.2.5+
query_excluding_mv_namesЧерный список материализованных представлений, которые могут использоваться для перезаписи запросов.v3.1.11+
v3.2.5+
cbo_materialized_view_rewrite_related_mvs_limitМаксимальное количество кандидатов материализованных представлений на этапе планирования.64v3.1.9+
v3.2.5+

Свойства

СвойствоОписаниеПоддерживаемые версии
session.<property_name>Префикс переменных сессии, используемых для построения материализованного представления, например, session.query_timeout и session.query_mem_limit.v3.0+
auto_refresh_partitions_limitМаксимальное количество разделов материализованного представления, которые должны быть обновлены каждый раз при запуске автоматического обновления.v2.5+
excluded_trigger_tablesБазовые таблицы, обновления которых не будут запускать автоматическое обновление материализованного представления.v2.5+
partition_refresh_numberКоличество разделов, которые должны быть обновлены в каждой партии при выполнении задачи обновления партиями.v2.5+
partition_ttl_numberКоличество самых последних разделов материализованного представления для сохранения.v2.5+
partition_ttlВремя жизни (TTL) для разделов материализованного представления. Это свойство рекомендуется вместо partition_ttl_number.v3.1.4+
v3.2+
force_external_table_query_rewriteВключать ли перезапись запросов для материализованных представлений на основе внешнего каталога.v2.5+
query_rewrite_consistencyПравило перезаписи запросов для материализованных представлений, построенных на внутренних таблицах.v3.0.5+
v3.1+
resource_groupГруппа ресурсов, к которой принадлежат задачи обновления материализованного представления.v3.1+
colocate_withГруппа совместного размещения материализованного представления.v3.1+
foreign_key_constraintsОграничения внешнего ключа при создании материализованного представления для перезаписи запросов в сценарии View Delta Join.v2.5.4+
v3.0+
unique_constraintsОграничения уникального ключа при создании материализованного представления для перезаписи запросов в сценарии View Delta Join.v2.5.4+
v3.0+
mv_rewrite_staleness_secondДопустимость устаревания данных материализованного представления во время перезаписи запроса.v3.1+
enable_query_rewriteМожет ли материализованное представление использоваться для перезаписи запросов.v3.3+
excluded_refresh_tablesБазовые таблицы, которые не запускают синхронизацию данных во время обновления материализованного представления.v3.3+

Разбиение на разделы

ВыравниваниеСлучай использованияПоддерживаемые версии
Выравнивание разделов один к одному (типы Date)Создание материализованного представления, разделы которого соответствуют разделам базовой таблицы один к одному, используя тот же ключ разбиения. Ключ разбиения должен быть типа DATE или DATETIME.v2.5+
Выравнивание разделов один к одному (тип STRING)Создание материализованного представления, разделы которого соответствуют разделам базовой таблицы один к одному, используя тот же ключ разбиения. Ключ разбиения должен быть типа STRING.v3.1.4+
v3.2+
Выравнивание разделов с агрегацией временной детализации (типы Date)Создание материализованного представления, детализация разбиения которого больше, чем у базовой таблицы, используя функцию date_trunc на ключе разбиения. Ключ разбиения должен быть типа DATE или DATETIME.v2.5+
Выравнивание разделов с агрегацией временной детализации (тип STRING)Создание материализованного представления, детализация разбиения которого больше, чем у базовой таблицы, используя функцию date_trunc на ключе разбиения. Ключ разбиения должен быть типа STRING.v3.1.4+
v3.2+
Выравнивание разделов с настраиваемой временной детализациейСоздание материализованного представления и настройка временной детализации для его разделов, используя функцию date_trunc с функцией time_slice или date_slice.v3.2+
Выравнивание разделов с несколькими базовыми таблицамиСоздание материализованного представления, разделы которого выровнены с разделами нескольких базовых таблиц, при условии, что базовые таблицы используют один и тот же тип ключа разбиения.v3.3+

Различные методы соединения

  • Одна таблица фактов (v2.4+): Установление сопоставления разделов между материализованным представлением и таблицей фактов обеспечивает автоматическое обновление разделов материализованного представления при обновлении таблицы фактов.
  • Несколько таблиц фактов (v3.3+): Установление сопоставления разделов между материализованным представлением и несколькими таблицами фактов, которые соединяются/объединяются с одинаковой временной детализацией, обеспечивает автоматическое обновление разделов материализованного представления при обновлении любой из таблиц фактов.
  • Временная таблица измерений (v3.3+): Предположим, что таблица измерений хранит данные исторических версий и разбита на разделы с определенной временной детализацией, а таблица фактов соединяется с таблицей измерений с той же временной детализацией. Установление сопоставления разделов между материализованным представлением и как таблицей фактов, так и таблицей измерений обеспечивает автоматическое обновление разделов материализованного представления при обновлении любой из таблиц.

Материализованные представления на внешних каталогах

Внешний источник данныхПоддерживаемый сценарий и версииСтабильные версии
Hive
  • Неразбитая таблица: v2.5.4 & v3.0+
  • Раздел типа DATE и DATETIME: v2.5.4 & v3.0+
  • Преобразование ключа раздела типа STRING в тип DATE: v3.1.4 & v3.2+
  • Материализованные представления на Hive View: Будет поддерживаться
  • Многоуровневое разбиение: Будет поддерживаться
v2.5.13+
v3.0.6+
v3.1.5+
v3.2+
Iceberg
  • Неразбитая таблица: v3.0+
  • Раздел типа DATE и DATETIME: v3.1.4 & v3.2+
  • Преобразование ключа раздела типа STRING в тип DATE: v3.1.4 & v3.2+
  • Материализованные представления на Iceberg View: Будет поддерживаться
  • Преобразование разделов: v3.2.3
  • Обновление на уровне разделов: v3.1.7 & v3.2.3
  • Многоуровневое разбиение: Будет поддерживаться
v3.1.5+
v3.2+
Hudi
  • Неразбитая таблица: v3.2+
  • Раздел типа DATE и DATETIME: v3.2+
  • Многоуровневое разбиение: Будет поддерживаться
Нестабильно
Paimon
  • Неразбитая таблица: v2.5.4 & v3.0+
  • Раздел типа DATE и DATETIME: Будет поддерживаться
  • Многоуровневое разбиение: Будет поддерживаться
Нестабильно
DeltaLake
  • Неразбитая таблица: v3.2+
  • Разбитая таблица: Будет поддерживаться
  • Многоуровневое разбиение: Будет поддерживаться
Нестабильно
JDBC
  • Неразбитая таблица: v3.0+
  • Разбитая таблица: MySQL RangeColumn Partition v3.1.4
Нестабильно

Перезапись запросов

ФункцияОписаниеПоддерживаемые версии
Single Table RewriteПерезапись запросов с материализованными представлениями, построенными на одной внутренней таблице.v2.5+
Inner Join RewriteПерезапись запросов для INNER/CROSS JOIN на внутренних таблицах.v2.5+
Aggregate RewriteПерезапись запросов для соединений с базовыми агрегациями.v2.5+
UNION RewriteПерезапись компенсации предиката UNION и перезапись компенсации раздела UNION на внутренних таблицах.v2.5+
Nested Materialized View RewriteПерезапись запросов с вложенными материализованными представлениями на внутренних таблицах.v2.5+
Count Distinct Rewrite (bitmap/hll)Перезапись запросов для вычислений COUNT DISTINCT в вычисления на основе bitmap или HLL.v2.5.6+
v3.0+
View Delta Join RewriteПерезапись запросов, которые соединяют таблицы, являющиеся подмножеством таблиц, которые соединяет материализованное представление.v2.5.4+
v3.0+
Join Derivability RewriteПерезапись запросов между различными типами соединений.v2.5.8+
v3.0.4+
v3.1+
Full Outer Join and Other JoinsПерезапись запросов для Full Outer Join, Semi Join и Anti Join.v3.1+
Avg to Sum/Count RewriteПерезапись запросов для avg() в sum() / count()v3.1+
View-based RewriteПерезапись запросов с материализованными представлениями, построенными на представлениях, без переписывания запросов к представлению в запросы к базовым таблицам представления.v3.2.2+
Count Distinct Rewrite (ArrayAgg)Перезапись запросов для вычислений COUNT DISTINCT в вычисления с функцией array_agg_distinct.v3.2.5+
v3.3+
Text-based Query RewriteПерезапись запроса, который имеет идентичное абстрактное синтаксическое дерево с определением материализованного представления.v3.3+

Диагностические функции

ФункцияСценарий использованияПоддерживаемые версии
TRACE REWRITEИспользуйте оператор TRACE REWRITE для диагностики проблем перезаписи.v2.5.10+
v3.0.5+
v3.1+
Query DumpДамп информации о материализованном представлении при его запросе.v3.1+
Refresh Audit LogЗапись SQL, выполненного в журнале аудита при обновлении материализованного представления.v2.5.8+
v3.0.3+
v3.1+
Hit Audit LogЗапись попавшего материализованного представления и кандидатов материализованных представлений в журнале аудита при перезаписи запроса в материализованное представление.v3.1.4+
v3.2+
Monitoring MetricsСпециальные метрики мониторинга для материализованных представлений.v3.1.4+
v3.2+