メインコンテンツまでスキップ
バージョン: 3.2

機能サポート: 非同期マテリアライズドビュー

非同期マテリアライズドビューは、StarRocks v2.4 以降でサポートされています。非同期マテリアライズドビューは、StarRocks 内またはデータレイク内の大規模なテーブルに対するジョインや集計を含む複雑なクエリを高速化するために設計されています。クエリが頻繁に実行される場合や十分に複雑な場合、パフォーマンスの差は顕著になることがあります。さらに、非同期マテリアライズドビューは、データウェアハウス上で数学的モデルを構築する際にも特に有用です。

このドキュメントでは、非同期マテリアライズドビューの能力の限界と、関連する機能のサポートされているバージョンについて説明します。

DDL 機能

機能説明サポートされているバージョン
Auto Analyzeマテリアライズドビューが作成された後に統計を自動的に収集し、書き換えの失敗を回避します。v3.0+
Random Bucketingマテリアライズドビューに対してデフォルトでランダムバケット法を有効にします。v3.1+
Deferred RefreshCREATE MATERIALIZED VIEW で DEFERRED または IMMEDIATE を使用して、マテリアライズドビューを作成後すぐに更新するかどうかを指定できます。v3.0+
Order ByORDER 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 MODEREFRESH MATERIALIZED VIEW で WITH SYNC MODE キーワードを使用して、マテリアライズドビューの更新タスクを同期実行できます。v2.5.8+
v3.0.4+
v3.1+
Intermediate Result Spillingマテリアライズドビューの構築中に OOM を回避するために enable_spill プロパティを使用して Intermediate Result Spilling を有効にできます。v3.1+
Resource Groupマテリアライズドビューの構築にリソースグループを指定し、リソースの分離を実現できます。v3.1+
Materialized View on Viewビューに基づいてマテリアライズドビューを作成できます。v3.1+
Swap Materialized ViewALTER 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マテリアライズドビューのクエリの書き換えを有効にするかどうか。truev2.5+
enable_materialized_view_for_insertINSERT 文に対するマテリアライズドビューのクエリの書き換えを有効にするかどうか。falsev2.5.18+
v3.0.9+
v3.1.7+
v3.2.2+
materialized_view_rewrite_modeマテリアライズドビューのクエリの書き換えモード。DEFAULTv3.2+
optimizer_materialized_view_timelimitマテリアライズドビューのクエリの書き換えに使用できる最大時間。これを超えるとクエリの書き換えは放棄され、オプティマイザープロセスが続行されます。1000v3.1.9+
v3.2.5+
analyze_mvマテリアライズドビューが更新された後に統計を収集する方法。SAMPLEv3.0+
enable_materialized_view_plan_cacheマテリアライズドビューのプランキャッシュを有効にするかどうか。デフォルトでは、1000 のマテリアライズドビュープランがキャッシュされます。TRUEv2.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プラン段階での候補マテリアライズドビューの最大数。64v3.1.9+
v3.2.5+

プロパティ

プロパティ説明サポートされているバージョン
session.<property_name>マテリアライズドビューの構築に使用されるセッション変数のプレフィックス。例: session.query_timeoutsession.query_mem_limitv3.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外部カタログベースのマテリアライズドビューに対するクエリの書き換えを有効にするかどうか。v2.5+
query_rewrite_consistency内部テーブルに基づいて構築されたマテリアライズドビューのクエリの書き換えルール。v3.0.5+
v3.1+
resource_groupマテリアライズドビューの更新タスクが属するリソースグループ。v3.1+
colocate_withマテリアライズドビューのコロケーショングループ。v3.1+
foreign_key_constraintsView Delta Join シナリオでクエリの書き換えのためにマテリアライズドビューを作成する際の外部キー制約。v2.5.4+
v3.0+
unique_constraintsView Delta Join シナリオでクエリの書き換えのためにマテリアライズドビューを作成する際のユニークキー制約。v2.5.4+
v3.0+
mv_rewrite_staleness_secondクエリの書き換え中のマテリアライズドビューデータの古さの許容範囲。v3.1+
enable_query_rewriteマテリアライズドビューがクエリの書き換えに使用できるかどうか。v3.3+

パーティショニング

アライメントユースケースサポートされているバージョン
パーティションを1対1でアライン (日付型)同じパーティションキーを使用して、ベーステーブルのパーティションに1対1で対応するマテリアライズドビューを作成します。パーティションキーは DATE または DATETIME 型でなければなりません。v2.5+
パーティションを1対1でアライン (STRING型)同じパーティションキーを使用して、ベーステーブルのパーティションに1対1で対応するマテリアライズドビューを作成します。パーティションキーは STRING 型でなければなりません。v3.1.4+
v3.2+
時間粒度のロールアップでパーティションをアライン (日付型)パーティションキーに 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+): 次元テーブルが履歴バージョンデータを格納し、特定の時間粒度でパーティション化され、ファクトテーブルが同じ時間粒度で次元テーブルとジョインする場合、マテリアライズドビューとファクトテーブルおよび次元テーブルの両方間のパーティションマッピングを確立することで、いずれかのテーブルが更新されたときにマテリアライズドビューパーティションが自動的に更新されることを保証します。

外部カタログ上のマテリアライズドビュー

外部データソースサポートされているシナリオとバージョン安定版バージョン
Hive
  • 非パーティションテーブル: v2.5.4 & v3.0+
  • DATE および DATETIME 型パーティション: v2.5.4 & v3.0+
  • STRING 型パーティションキーを DATE 型に変換: v3.1.4 & v3.2+
  • Hive View 上のマテリアライズドビュー: サポート予定
  • 多層パーティショニング: サポート予定
v2.5.13+
v3.0.6+
v3.1.5+
v3.2+
Iceberg
  • 非パーティションテーブル: v3.0+
  • DATE および DATETIME 型パーティション: v3.1.4 & v3.2+
  • STRING 型パーティションキーを DATE 型に変換: v3.1.4 & v3.2+
  • Iceberg View 上のマテリアライズドビュー: サポート予定
  • パーティション変換: v3.2.3
  • パーティションレベルの更新: v3.1.7 & v3.2.3
  • 多層パーティショニング: サポート予定
v3.1.5+
v3.2+
Hudi
  • 非パーティションテーブル: v3.2+
  • DATE および DATETIME 型パーティション: v3.2+
  • 多層パーティショニング: サポート予定
安定版ではない
Paimon
  • 非パーティションテーブル: v2.5.4 & v3.0+
  • DATE および DATETIME 型パーティション: サポート予定
  • 多層パーティショニング: サポート予定
安定版ではない
DeltaLake
  • 非パーティションテーブル: v3.2+
  • パーティションテーブル: サポート予定
  • 多層パーティショニング: サポート予定
安定版ではない
JDBC
  • 非パーティションテーブル: v3.0+
  • パーティションテーブル: MySQL RangeColumn Partition v3.1.4
安定版ではない

クエリの書き換え

機能説明サポートされているバージョン
単一テーブルの書き換え単一の内部テーブルに基づいて構築されたマテリアライズドビューによるクエリの書き換え。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() に書き換えるクエリ。v3.1+
ビューに基づく書き換えビューに基づいて構築されたマテリアライズドビューによるクエリの書き換え。ビューに対するクエリをビューのベーステーブルに対するクエリに書き換えずに行います。v3.2.2+
Count Distinct の書き換え (ArrayAgg)COUNT DISTINCT 計算を array_agg_distinct 関数を使用した計算に書き換え。v3.2.5+
v3.3+
テキストベースのクエリの書き換えマテリアライズドビューの定義と同一の抽象構文ツリーを持つクエリを再書き換え。v3.3+

診断機能

機能使用シナリオサポートされているバージョン
TRACE REWRITETRACE 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+