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

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

非同期マテリアライズドビューは、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 プロパティを使用して中間結果のスピリングを有効にします。v3.1+
Resource Groupマテリアライズドビュー構築のために 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マテリアライズドビューのクエリの書き換えに使用できる最大時間。これを超えると、クエリの書き換えは放棄され、Optimizer プロセスが続行されます。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_rewriteexternal catalog ベースのマテリアライズドビューに対するクエリの書き換えを有効にするかどうか。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+
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.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 に書き換え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+