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

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

非同期マテリアライズドビューは、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マテリアライズドビューのクエリの書き換えに使用できる最大時間。この時間を超えると、クエリの書き換えは放棄され、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+

パーティショニング

アライメントユースケースサポートされているバージョン
Align partitions one-to-one (Date types)ベーステーブルのパーティションに対応するマテリアライズドビューを、同じパーティションキーを使用して作成します。パーティションキーはDATEまたはDATETIME型である必要があります。v2.5+
Align partitions one-to-one (STRING type)ベーステーブルのパーティションに対応するマテリアライズドビューを、同じパーティションキーを使用して作成します。パーティションキーはSTRING型である必要があります。v3.1.4+
v3.2+
Align partitions with time granularity rollup (Date types)date_trunc関数をパーティションキーに使用して、ベーステーブルよりも大きなパーティショニング粒度を持つマテリアライズドビューを作成します。パーティションキーはDATEまたはDATETIME型である必要があります。v2.5+
Align partitions with time granularity rollup (STRING type)date_trunc関数をパーティションキーに使用して、ベーステーブルよりも大きなパーティショニング粒度を持つマテリアライズドビューを作成します。パーティションキーはSTRING型である必要があります。v3.1.4+
v3.2+
Align partitions at a customized time granularitydate_trunc関数とtime_sliceまたはdate_slice関数を使用して、パーティションの時間粒度をカスタマイズしたマテリアライズドビューを作成します。v3.2+
Align partitions with multiple base tables複数のベーステーブルのパーティションに対応するマテリアライズドビューを作成します。ベーステーブルは同じタイプのパーティションキーを使用している必要があります。v3.3+

異なるジョイン方法

  • Single Fact Table (v2.4+): マテリアライズドビューとファクトテーブル間のパーティションマッピングを確立することで、ファクトテーブルが更新されたときにマテリアライズドビューパーティションが自動的にリフレッシュされることを保証します。
  • Multiple Fact Tables (v3.3+): マテリアライズドビューと複数のファクトテーブル間のパーティションマッピングを確立し、同じ時間粒度でジョインまたはユニオンされることで、いずれかのファクトテーブルが更新されたときにマテリアライズドビューパーティションが自動的にリフレッシュされることを保証します。
  • Temporal Dimension Table (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
安定版ではない

クエリの書き換え

機能説明サポートされているバージョン
Single Table Rewrite単一の内部テーブルに基づいて構築されたマテリアライズドビューでのクエリの書き換え。v2.5+
Inner Join Rewrite内部テーブルでのINNER/CROSS JOINのクエリの書き換え。v2.5+
Aggregate Rewrite基本的な集計を伴うジョインのクエリの書き換え。v2.5+
UNION Rewrite内部テーブルでの述語UNION補償書き換えとパーティションUNION補償書き換え。v2.5+
Nested Materialized View Rewrite内部テーブルでのネストされたマテリアライズドビューでのクエリの書き換え。v2.5+
Count Distinct Rewrite (bitmap/hll)COUNT DISTINCT計算をビットマップまたはHLLベースの計算に書き換え。v2.5.6+
v3.0+
View Delta Join Rewriteマテリアライズドビューがジョインするテーブルのサブセットをジョインするクエリを再書き換え。v2.5.4+
v3.0+
Join Derivability Rewrite異なるジョインタイプ間のクエリの書き換え。v2.5.8+
v3.0.4+
v3.1+
Full Outer Join and Other JoinsFull Outer Join、Semi Join、Anti Joinのクエリの書き換え。v3.1+
Avg to Sum/Count Rewriteavg()をsum() / count()に書き換えるクエリ。v3.1+
View-based Rewriteビューに基づいて構築されたマテリアライズドビューでのクエリの書き換え。ビューに対するクエリをビューのベーステーブルに対するクエリに書き換えません。v3.2.2+
Count Distinct Rewrite (ArrayAgg)COUNT DISTINCT計算をarray_agg_distinct関数を使用した計算に書き換え。v3.2.5+
v3.3+
Text-based Query Rewriteマテリアライズドビューの定義と同一の抽象構文ツリーを持つクエリを再書き換え。v3.3+

診断機能

機能使用シナリオサポートされているバージョン
TRACE REWRITETRACE REWRITEステートメントを使用して書き換えの問題を診断します。v2.5.10+
v3.0.5+
v3.1+
Query Dumpマテリアライズドビューがクエリされたときにその情報をダンプします。v3.1+
Refresh Audit LogマテリアライズドビューがリフレッシュされたときにAudit Logに実行されたSQLを記録します。v2.5.8+
v3.0.3+
v3.1+
Hit Audit Logクエリがマテリアライズドビューに書き換えられたときに、ヒットしたマテリアライズドビューと候補のマテリアライズドビューをAudit Logに記録します。v3.1.4+
v3.2+
Monitoring Metricsマテリアライズドビュー専用の監視メトリクス。v3.1.4+
v3.2+