Поддержка функций: асинхронные материализованные представления¶
Асинхронные материализованные представления поддерживаются, начиная с StarRocks v2.4. Они предназначены для ускорения сложных запросов с JOIN и агрегациями по большим таблицам как в StarRocks, так и в Data Lake. Разница в производительности особенно заметна при частом выполнении запроса или его высокой сложности. Кроме того, асинхронные MV полезны для построения математических моделей поверх вашего хранилища данных.
Этот документ описывает границы применимости асинхронных MV и версии, начиная с которых поддерживаются соответствующие возможности.
DDL Features¶
Feature |
Description |
Supported Version(s) |
|---|---|---|
Auto Analyze |
Автоматический сбор статистики после создания MV во избежание сбоев переписывания запросов. |
v3.0+ |
Random Bucketing |
По умолчанию включает стратегию случайного «раскладывания по бакетам» для MV. |
v3.1+ |
Deferred Refresh |
Позволяет указать, нужно ли обновлять MV сразу после создания, с помощью ключевых слов |
v3.0+ |
Order By |
Возможность задавать сортировочный ключ для MV с помощью |
v3.1+ |
Window/CTE/Union/Subquery |
Поддержка оконных функций, CTE, UNION и подзапросов в MV. |
v2.5+ |
ALTER ACTIVE |
Активация невалидных MV после изменений схемы базовых таблиц с помощью ключевого слова |
v2.5.7+ |
REFRESH SYNC MODE |
Синхронное выполнение задач обновления MV с помощью ключевых слов |
v2.5.8+ |
Intermediate Result Spilling |
Включение «Spill» промежуточных результатов с помощью свойства |
v3.1+ |
Resource Group |
Указание ресурсной группы свойством |
v3.1+ |
Materialized View on View |
Создание MV на основе логических представлений (View). |
v3.1+ |
Swap Materialized View |
Атомарная замена MV с помощью ключевых слов |
v3.1+ |
CREATE INDEX ON Materialized View |
Создание индексов на MV для ускорения точечных запросов. |
v3.0.7+ |
AUTO ACTIVE |
Фоновая автоматическая активация невалидных MV с экспоненциальной задержкой (остановка после достижения 60 минут). |
v3.1.4+ |
Backup and Restore |
Поддержка Backup и Restore для MV. |
v3.2+ |
Object Dependencies |
Системное представление |
v3.2+ |
Variables¶
Variable |
Description |
Default |
Supported Version(s) |
|---|---|---|---|
enable_materialized_view_rewrite |
Включение переписывания запросов с использованием MV. |
true |
v2.5+ |
enable_materialized_view_for_insert |
Включение переписывания запросов для операторов |
false |
v2.5.18+ |
materialized_view_rewrite_mode |
Режим переписывания запросов с использованием MV. |
DEFAULT |
v3.2+ |
optimizer_materialized_view_timelimit |
Максимальное время, отведенное на переписывание запроса через MV; по истечении этого времени переписывание прекращается, и продолжается обычная оптимизация. |
1000 |
v3.1.9+ |
analyze_mv |
Метод сбора статистики после обновления MV. |
SAMPLE |
v3.0+ |
enable_materialized_view_plan_cache |
Включение кэша планов для MV. По умолчанию кэшируется 1000 планов. |
TRUE |
v2.5.13+ |
query_including_mv_names |
Белый список MV, которые разрешено использовать для переписывания запроса. |
v3.1.11+ |
|
query_excluding_mv_names |
Черный список MV, которые запрещено использовать для переписывания запроса. |
v3.1.11+ |
|
cbo_materialized_view_rewrite_related_mvs_limit |
Максимальное число кандидатов MV на этапе планирования. |
64 |
v3.1.9+ |
Properties¶
Property |
Description |
Supported Version(s) |
|---|---|---|
|
Префикс сессионных переменных, используемых при построении MV, например, |
v3.4+ |
auto_refresh_partitions_limit |
Максимальное число партиций MV, обновляемых при каждом автоматическом запуске обновления. |
v2.5+ |
excluded_trigger_tables |
Базовые таблицы, изменения в которых не будут триггерить автoобновление MV. |
v2.5+ |
partition_refresh_number |
Число партиций, обновляемых в одном батче при пакетном выполнении задачи обновления. |
v2.5+ |
partition_ttl_number |
Количество «последних» партиций MV, сохраняемых в актуальном состоянии. |
v2.5+ |
partition_ttl |
Время жизни (TTL) партиций MV. Рекомендуется вместо |
v3.1.4+ |
force_external_table_query_rewrite |
Включение переписывания запросов для MV, построенных на внешних каталогах. |
v2.5+ |
query_rewrite_consistency |
Правило согласованности данных при переписывании запросов для MV на внутренних таблицах. |
v3.0.5+ |
resource_group |
Ресурсная группа, к которой относятся задачи обновления MV. |
v3.1+ |
colocate_with |
Группа коллокации для MV. |
v3.1+ |
foreign_key_constraints |
Ограничения внешних ключей при создании MV для переписывания запросов в сценарии View Delta Join. |
v2.5.4+ |
unique_constraints |
Ограничения уникальности при создании MV для переписывания запросов в сценарии View Delta Join. |
v2.5.4+ |
mv_rewrite_staleness_second |
Допустимая «устарелость» данных MV при переписывании запросов. |
v3.1+ |
enable_query_rewrite |
Разрешено ли использовать MV для переписывания запросов. |
v3.3+ |
excluded_refresh_tables |
Базовые таблицы, данные которых не синхронизируются при обновлении MV. |
v3.3+ |
Partitioning¶
Alignment |
Use Case |
Supported Version(s) |
|---|---|---|
Создание MV, чьи партиции один‑к‑одному соответствуют партициям базовой таблицы при одинаковом ключе партиционирования. Ключ должен иметь тип DATE или DATETIME. |
v2.5+ |
|
Создание MV, чьи партиции один‑к‑одному соответствуют партициям базовой таблицы при одинаковом ключе партиционирования. Ключ должен иметь тип STRING. |
v3.1.4+ |
|
Создание MV с более крупной временной гранулярностью партиционирования, чем у базовой таблицы, с использованием функции |
v2.5+ |
|
Создание MV с более крупной временной гранулярностью партиционирования, чем у базовой таблицы, с использованием |
v3.1.4+ |
|
Создание MV с произвольно заданной временной гранулярностью партиций с помощью |
v3.2+ |
|
Создание MV, чьи партиции выровнены с партициями нескольких базовых таблиц при одинаковом типе ключа партиционирования. |
v3.3+ |
|
Задание нескольких столбцов партиционирования для MV с отображением «один к одному» на столбцы партиционирования базовых таблиц. |
v3.5+ |
Different Join Methods
Single Fact Table (v2.4+): Создание соответствия партиций между MV и факт‑таблицей обеспечивает автоматическое обновление партиций MV при обновлении факт‑таблицы.
Multiple Fact Tables (v3.3+): Создание соответствия партиций между MV и несколькими факт‑таблицами, объединяемыми или объединяемыми
UNIONна одинаковой временной гранулярности, обеспечивает автoобновление партиций MV при обновлении любой факт‑таблицы.Temporal Dimension Table (v3.3+): Если таблица размерностей хранит исторические версии и партиционирована по заданной временной гранулярности, а факт‑таблица объединяется с ней на той же гранулярности, выравнивание партиций MV и по факт‑таблице, и по таблице размерностей обеспечивает автoобновление при изменении любой из них.
MV на внешних каталогах¶
External Data Source |
Supported Scenario and Version(s) |
Stable Version(s) |
|---|---|---|
Hive |
|
v2.5.13+ |
Iceberg |
|
v3.1.5+ |
Hudi |
|
Not Stable |
Paimon |
|
Not Stable |
DeltaLake |
|
Not Stable |
JDBC |
|
Not Stable |
MV на внешних таблицах не поддерживают автоматическое обновление, триггеримое изменениями данных базовой таблицы. Поддерживаются только асинхронное фиксированное по интервалу обновление и ручное обновление.
Query Rewrite¶
Feature |
Description |
Supported Version(s) |
|---|---|---|
Single Table Rewrite |
Переписывание запросов с использованием MV, построенных на одной внутренней таблице. |
v2.5+ |
Inner Join Rewrite |
Переписывание запросов для |
v2.5+ |
Aggregate Rewrite |
Переписывание запросов для |
v2.5+ |
UNION Rewrite |
Компенсация предикатов UNION и партиций UNION на внутренних таблицах. |
v2.5+ |
Nested Materialized View Rewrite |
Переписывание запросов с использованием вложенных MV на внутренних таблицах. |
v2.5+ |
Count Distinct Rewrite (bitmap/hll) |
Переписывание |
v2.5.6+ |
View Delta Join Rewrite |
Переписывание запросов, объединяющих подмножество таблиц из объединения, определенного в MV. |
v2.5.4+ |
Join Derivability Rewrite |
Переписывание между разными типами соединений. |
v2.5.8+ |
Full Outer Join and Other Joins |
Переписывание для |
v3.1+ |
Avg to Sum/Count Rewrite |
Переписывание |
v3.1+ |
View-based Rewrite |
Переписывание запросов с использованием MV, построенных поверх View, без транскрибирования запроса к View в запросы к ее базовым таблицам. |
v3.2.2+ |
Count Distinct Rewrite (ArrayAgg) |
Переписывание |
v3.2.5+ |
Text-based Query Rewrite |
Переписывание запроса, абстрактное синтаксическое дерево которого идентично определению MV. |
v3.3+ |
Diagnostic Features¶
Feature |
Usage Scenario |
Supported Version(s) |
|---|---|---|
TRACE REWRITE |
Диагностика проблем переписывания с помощью оператора |
v2.5.10+ |
Query Dump |
Сброс сведений о MV в момент его использования. |
v3.1+ |
Refresh Audit Log |
Запись SQL в Audit Log при обновлении MV. |
v2.5.8+ |
Hit Audit Log |
Запись в Audit Log сведений о «попавшем» MV и кандидатах при переписывании запроса в MV. |
v3.1.4+ |
Monitoring Metrics |
Специализированные метрики мониторинга для MV. |
v3.1.4+ |