Поддержка функций: Асинхронные материализованные представления
Асинхронные материализованные представления поддерживаются начиная с 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 | Включать ли перезапись запросов материализованного представления. | true | v1.5.2+ |
| enable_materialized_view_for_insert | Включать ли перезапись запросов материализованного представления для инструкций INSERT. | false | v1.5.2+ |
| materialized_view_rewrite_mode | Режим перезаписи запросов материализованного представления. | DEFAULT | v1.5.2+ |
| optimizer_materialized_view_timelimit | Максимальное время, которое может быть использовано для перезаписи запросов материализованного представления, после чего перезапись запросов отменяется, и процесс оптимизатора продолжается. | 1000 | v1.5.2+ |
| analyze_mv | Метод сбора статистики после обновления материализованного представления. | SAMPLE | v1.5.2+ |
| enable_materialized_view_plan_cache | Включать ли кэш планов для материализованных представлений. По умолчанию кэшируется 1000 планов материализованных представлений. | TRUE | v1.5.2+ |
| query_including_mv_names | Белый список материализованных представлений, которые могут быть использованы для перезаписи запросов. | v1.5.2+ | |
| query_excluding_mv_names | Черный список материализованных представлений, которые могу т быть использованы для перезаписи запросов. | v1.5.2+ | |
| cbo_materialized_view_rewrite_related_mvs_limit | Максимальное количество кандидатов материализованных представлений на этапе планирования. | 64 | v1.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+ |
| Iceberg |
| v1.5.2+ |
| Hudi |
| Не стабильно |
| Paimon |
| Не стабильно |
| DeltaLake |
| Не стабильно |
| JDBC |
| Не стабильно |
Материализованные представления внешних таблиц не поддерживают автоматическое обновление запускаемое изменениями данных базовой таблицы. Они поддерживают только асинхронное обновле ние с фиксированным интервалом и ручное обновление.
Перезапись запросов
| Функция | Описание | Поддерживаемые версии |
|---|---|---|
| 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+ |