Поддержка функций: Асинхронные материализованные представления
Асинхронные материализованные представления поддерживаются начиная с 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 | Поддерживает включение сброса промежуточных результатов с помощью свойства 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.query_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 | Группа совместного размещения материализованного пр едставления. | v1.5.2+ |
| foreign_key_constraints | Ограничения внешнего ключа при создании материализованного представления для перезаписи запросов в сценарии View Delta Join. | v1.5.2+ |
| unique_constraints | Ограничения уникального ключа при создании материализованного представления для перезаписи запросов в сценарии 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) | Создание материализованного представления, разделы которого соответствуют разделам базовой таблицы один к одному, используя тот же ключ разбиения. Ключ разбиения должен быть типа DATE или DATETIME. | v1.5.2+ |
| Выравнивание разделов один к одному (тип STRING) | Создание материализованного представления, разделы которого соответствуют разделам базовой таблицы один к одному, используя тот же ключ разбиения. Ключ разбиения должен быть типа STRING. | v1.5.2+ |
| Выравнивание разделов с агрегацией временной детализации (типы Date) | Создание материализованного представления, детализация разбиения которого больше, чем у базовой таблицы, используя функцию date_trunc на ключе разбиения. Ключ разбиения должен быть типа DATE или DATETIME. | v1.5.2+ |
| Выравнивание разделов с агрегацией временной детализации (тип STRING) | Создание материализованного представления, детализация разбиения которого больше, чем у базовой таблицы, используя функцию date_trunc на ключе разбиения. Ключ разбиения должен быть типа STRING. | v1.5.2+ |
| Выравнивание разделов с настраиваемой временной детализацией | Создание материализованного представления и настройка временной детализации для его разделов, используя функцию date_trunc с функцией time_slice или date_slice. | 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, выполненного в журнале аудита при обновлении материализованного представления. | v1.5.2+ |
| Hit Audit Log | Запись попавшего материализованного представления и кандидатов материализованных представлений в журнале аудита при перезаписи запроса в материализованное представление. | v1.5.2+ |
| Monitoring Metrics | Специальные метрики мониторинга для материализованных представлений. | v1.5.2+ |