Перейти к основному содержимому
Версия: 2.0.x

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

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

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

Функции DDL

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

Переменные

ПеременнаяОписаниеПо умолчаниюПоддерживаемые версии
enable_materialized_view_rewriteВключать ли перезапись запросов материализованного представления.truev1.5.2+
enable_materialized_view_for_insertВключать ли перезапись запросов материализованного представления для инструкций INSERT.falsev1.5.2+
materialized_view_rewrite_modeРежим перезаписи запросов материализованного представления.DEFAULTv1.5.2+
optimizer_materialized_view_timelimitМаксимальное время, которое может быть использовано для перезаписи запросов материализованного представления, после чего перезапись запросов отменяется, и процесс оптимизатора продолжается.1000v1.5.2+
analyze_mvМетод сбора статистики после обновления материализованного представления.SAMPLEv1.5.2+
enable_materialized_view_plan_cacheВключать ли кэш планов для материализованных представлений. По умолчанию кэшируется 1000 планов материализованных представлений.TRUEv1.5.2+
query_including_mv_namesБелый список материализованных представлений, которые могут быть использованы для перезаписи запросов.v1.5.2+
query_excluding_mv_namesЧерный список материализованных представлений, которые могут быть использованы для перезаписи запросов.v1.5.2+
cbo_materialized_view_rewrite_related_mvs_limitМаксимальное количество кандидатов материализованных представлений на этапе планирования.64v1.5.2+

Свойства

СвойствоОписаниеПоддерживаемые версии
session.<property_name>Префикс переменных сеанса, используемых для построения материализованного представления, например, session.insert_timeout и session.query_mem_limit.v1.5.2+
auto_refresh_partitions_limitМаксимальное количество партиций материализованного представления, которые должны быть обновлены каждый раз при запуске автоматического обновления.v1.5.2+
excluded_trigger_tablesБазовые таблицы, обновления которых не будут запускать автоматическое обновление материализованного представления.v1.5.2+
partition_refresh_numberКоличество партиций, которые должны быть обновлены в каждом пакете, когда задача обновления выполняется пакетами.v1.5.2+
partition_ttl_numberКоличество последних партиций материализованного представления для сохранения.v1.5.2+
partition_ttlВремя жизни (TTL) для партиций материализованного представления. Это свойство рекомендуется вместо partition_ttl_number.v1.5.2+
force_external_table_query_rewriteВключать ли перезапись запросов для материализованных представлений на основе внешнего каталога.v1.5.2+
query_rewrite_consistencyПравило перезаписи запросов для материализованных представлений, построенных на внутренних таблицах.v1.5.2+
resource_groupГруппа ресурсов, к которой относятся задачи обновления материализованного представления.v1.5.2+
colocate_withГруппа colocation материализованного представления.v1.5.2+
foreign_key_constraintsОграничения Foreign Key при создании материализованного представления для перезаписи запросов в сценарии View Delta Join.v1.5.2+
unique_constraintsОграничения Unique Key при создании материализованного представления для перезаписи запросов в сценарии View Delta Join.v1.5.2+
mv_rewrite_staleness_secondДопуск устаревания данных материализованного представления во время перезаписи запросов.v1.5.2+
enable_query_rewriteМожет ли материализованное представление использоваться для перезаписи запросов.v1.5.2+
excluded_refresh_tablesБазовые таблицы, которые не запускают синхронизацию данных во время обновления материализованного представления.v1.5.2+

Партиционирование

ВыравниваниеВариант использованияПоддерживаемые версии
Выравнивание партиций один-к-одному (типы Date)Создание материализованного представления, партиции которого соответствуют партициям базовой таблицы один-к-одному, используя один и тот же Partitioning Key. Partitioning Key должен быть типа DATE или DATETIME.v1.5.2+
Выравнивание партиций один-к-одному (тип STRING)Создание материализованного представления, партиции которого соответствуют партициям базовой таблицы один-к-одному, используя один и тот же Partitioning Key. Partitioning Key должен быть типа STRING.v1.5.2+
Выравнивание партиций с временной детализацией rollup (типы Date)Создание материализованного представления, детализация партиционирования которого больше, чем у базовой таблицы, используя функцию date_trunc на Partitioning Key. Partitioning Key должен быть типа DATE или DATETIME.v1.5.2+
Выравнивание партиций с временной детализацией rollup (тип STRING)Создание материализованного представления, детализация партиционирования которого больше, чем у базовой таблицы, используя функцию date_trunc на Partitioning Key. Partitioning Key должен быть типа STRING.v1.5.2+
Выравнивание партиций с пользовательской временной детализациейСоздание материализованного представления и настройка временной детализации для его партиций, используя функцию date_trunc с функцией time_slice или date_slice.v1.5.2+
Выравнивание партиций с несколькими базовыми таблицамиСоздание материализованного представления, партиции которого выровнены с партициями нескольких базовых таблиц, при условии, что базовые таблицы используют один и тот же тип Partitioning Key.v1.5.2+
Выравнивание нескольких столбцов партицийУказание нескольких столбцов партиций для материализованного представления и их сопоставление один-к-одному со столбцами партиций базовых таблиц.v1.5.2+

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

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

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

Внешний источник данныхПоддерживаемый сценарий и версииСтабильные версии
Hive
  • Непартиционированная таблица: v1.5.2+
  • Партиция типа DATE и DATETIME: v1.5.2+
  • Преобразование Partition Key типа STRING в тип DATE: v1.5.2+
  • Материализованные представления на Hive View: Будет поддерживаться
  • Многоуровневое партиционирование: Будет поддерживаться
v1.5.2+
Iceberg
  • Непартиционированная таблица: v1.5.2+
  • Партиция типа DATE и DATETIME: v1.5.2+
  • Преобразование Partition Key типа STRING в тип DATE: v1.5.2+
  • Материализованные представления на Iceberg View: Будет поддерживаться
  • Partition Transform: v1.5.2
  • Обновление на уровне партиций: v1.5.2+
  • Многоуровневое партиционирование: v1.5.2+
v1.5.2+
Hudi
  • Непартиционированная таблица: v1.5.2+
  • Партиция типа DATE и DATETIME: v1.5.2+
  • Многоуровневое партиционирование: Будет поддерживаться
Не стабильно
Paimon
  • Непартиционированная таблица: v1.5.2+
  • Партиция типа DATE и DATETIME: Будет поддерживаться
  • Многоуровневое партиционирование: Будет поддерживаться
Не стабильно
DeltaLake
  • Непартиционированная таблица: v1.5.2+
  • Партиционированная таблица: Будет поддерживаться
  • Многоуровневое партиционирование: Будет поддерживаться
Не стабильно
JDBC
  • Непартиционированная таблица: v1.5.2+
  • Партиционированная таблица: MySQL RangeColumn Partition v1.5.2
Не стабильно
примечание

Материализованные представления внешних таблиц не поддерживают автоматическое обновление запускаемое изменениями данных базовой таблицы. Они поддерживают только асинхронное обновление с фиксированным интервалом и ручное обновление.

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

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

Функции диагностики

ФункцияСценарий использованияПоддерживаемые версии
TRACE REWRITEИспользование инструкции TRACE REWRITE для диагностики проблем перезаписи.v1.5.2+
Query DumpДамп информации о материализованном представлении при его запросе.v1.5.2+
Refresh Audit LogЗапись SQL, выполненного в Audit Log при обновлении материализованного представления.v1.5.2+
Hit Audit LogЗапись попавшего материализованного представления и кандидатов материализованных представлений в Audit Log, когда запрос переписывается в материализованное представление.v1.5.2+
Monitoring MetricsВыделенные метрики мониторинга для материализованных представлений.v1.5.2+