機能サポート: 非同期マテリアライズドビュー
非同期マテリアライズドビューは、StarRocks v2.4 以降でサポートされています。非同期マテリアライズドビューは、StarRocks 内やデータレイク内の大規模なテーブルに対するジョインや集計を含む複雑なクエリを高速化するために設計されています。クエリが頻繁に実行される場合や十分に複雑な場合、パフォーマンスの差は顕著です。さらに、非同期マテリアライズドビューは、データウェアハウス上で数学モデルを構築する際にも特に有用です。
このドキュメントでは、非同期マテリアライズドビューの能力の範囲と、関連する機能のサポートバージョンについて説明します。
DDL 機能
機能 | 説明 | サポートバージョン |
---|---|---|
Auto Analyze | マテリアライズドビュー作成後に統計を自動収集し、書き換えの失敗を回避します。 | v3.0+ |
Random Bucketing | マテリアライズドビューに対してデフォルトでランダムバケット法を有効にします。 | v3.1+ |
Deferred Refresh | CREATE MATERIALIZED VIEW で DEFERRED または IMMEDIATE を使用して、作成後すぐにマテリアライズドビューをリフレッシュするかどうかを指定できます。 | v3.0+ |
Order By | ORDER BY を使用してマテリアライズドビューのソートキーを指定できます。 | v3.1+ |
Window/CTE/Union/Subquery | マテリアライズドビューでウィンドウ関数、CTE、Union、およびサブクエリを使用できます。 | v2.5+ |
ALTER ACTIVE | ベーステーブルでのスキーマ変更後に、ALTER MATERIALIZED VIEW の ACTIVE キーワードを使用して無効なマテリアライズドビューをアクティブ化します。 | v2.5.7+ v3.0.1+ v3.1+ |
REFRESH SYNC MODE | REFRESH MATERIALIZED VIEW で WITH SYNC MODE キーワードを使用して、マテリアライズドビューのリフレッシュタスクの同期実行をサポートします。 | v2.5.8+ v3.0.4+ v3.1+ |
Intermediate Result Spilling | マテリアライズドビュー構築中の OOM を回避するために、enable_spill プロパティを使用して中間結果のスピリングを有効にします。 | v3.1+ |
Resource Group | マテリアライズドビュー構築のために resource_group プロパティを使用してリソースグループを指定し、リソースの分離を実現します。 | v3.1+ |
Materialized View on View | ビューに基づいてマテリアライズドビューを作成できます。 | v3.1+ |
Swap Materialized View | ALTER MATERIALIZED VIEW で SWAP WITH キーワードを使用してマテリアライズドビューを原子的に置き換えることをサポートします。 | 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 | マテリアライズドビューのクエリの書き換えを有効にするかどうか。 | true | v2.5+ |
enable_materialized_view_for_insert | INSERT 文に対するマテリアライズドビューのクエリの書き換えを有効にするかどうか。 | false | v2.5.18+ v3.0.9+ v3.1.7+ v3.2.2+ |
materialized_view_rewrite_mode | マテリアライズドビューのクエリの書き換えモード。 | DEFAULT | v3.2+ |
optimizer_materialized_view_timelimit | マテリアライズドビューのクエリの書き換えに使用できる最大時間。これを超えると、クエリの書き換えは放棄され、Optimizer プロセスが続行されます。 | 1000 | v3.1.9+ v3.2.5+ |
analyze_mv | マテリアライズドビューがリフレッシュされた後に統計を収集する方法。 | SAMPLE | v3.0+ |
enable_materialized_view_plan_cache | マテリアライズドビューのプランキャッシュを有効にするかどうか。デフォルトで、1000 のマテリアライズドビュープランがキャッシュされます。 | TRUE | v2.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 | プラン段階での候補マテリアライズドビューの最大数。 | 64 | v3.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 | external catalog ベースのマテリアライズドビューに対するクエリの書き換えを有効にするかどうか。 | 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+): 次元テーブルが履歴バージョンデータを保存し、特定の時間粒度でパーティション化されていると仮定し、ファクトテーブルが同じ時間粒度で次元テーブルとジョインします。マテリアライズドビューとファクトテーブルおよび次元テーブルの両方間のパーティションマッピングを確立することで、いずれかのテーブルが更新されたときにマテリアライズドビューパーティションが自動的にリフレッシュされることを保証します。
external catalog 上のマテリアライズドビュー
外部データソース | サポートされるシナリオとバージョン | 安定バージョン |
---|---|---|
Hive |
| v2.5.13+ v3.0.6+ v3.1.5+ v3.2+ |
Iceberg |
| v3.1.5+ v3.2+ |
Hudi |
| 安定していない |
Paimon |
| 安定していない |
DeltaLake |
| 安定していない |
JDBC |
| 安定していない |
クエリの書き換え
機能 | 説明 | サポートバージョン |
---|---|---|
単一テーブルの書き換え | 単一の内部テーブルに基づいて構築されたマテリアライズドビューでのクエリの書き換え。 | v2.5+ |
内部ジョインの書き換え | 内部テーブルでの INNER/CROSS JOIN のクエリの書き換え。 | v2.5+ |
集約の書き換え | 基本的な集計を伴うジョインのクエリの書き換え。 | v2.5+ |
UNION の書き換え | 内部テーブルでの述語 UNION 補償書き換えとパーティション UNION 補償書き換え。 | v2.5+ |
ネストされたマテリアライズドビューの書き換え | 内部テーブルでのネストされたマテリアライズドビューでのクエリの書き換え。 | v2.5+ |
Count Distinct の書き換え (bitmap/hll) | COUNT DISTINCT 計算を bitmap または HLL ベースの計算に書き換え。 | v2.5.6+ v3.0+ |
View Delta Join の書き換え | マテリアライズドビューがジョインするテーブルのサブセットをジョインするクエリを再書き換え。 | v2.5.4+ v3.0+ |
ジョインの導出可能性の書き換え | 異なるジョインタイプ間のクエリの書き換え。 | v2.5.8+ v3.0.4+ v3.1+ |
フルアウトジョインとその他のジョイン | フルアウトジョイン、セミジョイン、アンチジョインのクエリの書き換え。 | v3.1+ |
Avg を Sum/Count に書き換え | avg() を sum() / count() に書き換えるクエリの書き換え。 | v3.1+ |
ビューに基づく書き換え | ビューに基づいて構築されたマテリアライズドビューでのクエリの書き換え。ビューに対するクエリをビューのベーステーブルに対するクエリに書き換えずに行います。 | v3.2.2+ |
Count Distinct の書き換え (ArrayAgg) | COUNT DISTINCT 計算を array_agg_distinct 関数を使用した計算に書き換え。 | v3.2.5+ v3.3+ |
テキストベースのクエリの書き換え | マテリアライズドビューの定義と同一の抽象構文ツリーを持つクエリを再書き換え。 | v3.3+ |
診断機能
機能 | 使用シナリオ | サポートバージョン |
---|---|---|
TRACE REWRITE | TRACE REWRITE 文を使用して書き換えの問題を診断します。 | v2.5.10+ v3.0.5+ v3.1+ |
クエリダンプ | マテリアライズドビューがクエリされたときにその情報をダンプします。 | v3.1+ |
リフレッシュ監査ログ | マテリアライズドビューがリフレッシュされたときに監査ログに実行された SQL を記録します。 | v2.5.8+ v3.0.3+ v3.1+ |
ヒット監査ログ | クエリがマテリアライズドビューに書き換えられたときに、ヒットしたマテリアライズドビューと候補マテリアライズドビューを監査ログに記録します。 | v3.1.4+ v3.2+ |
監視メトリクス | マテリアライズドビュー専用の監視メトリクス。 | v3.1.4+ v3.2+ |