マテリアライズドビューを用いたクエリの書き換え
このトピックでは、StarRocks の非同期マテリアライズドビューを活用してクエリを自動的に書き換え、クエリを高速化する方法について説明します。
概要
StarRocks の非同期マテリアライズドビューは、SPJG (select-project-join-group-by) フォームに基づく広く採用されている透明なクエリの書き換えアルゴリズムを使用しています。クエリ文を変更することなく、StarRocks はベーステーブルに対するクエリを、事前計算された結果を含む対応するマテリアライズドビューに対するクエリに自動的に書き換えることができます。その結果、マテリアライズドビューは計算コストを大幅に削減し、クエリの実行を大幅に高速化するのに役立ちます。
非同期マテリアライズドビューに基づくクエリの書き換え機能は、特に次のシナリオで有用です:
-
メトリクスの事前集計
データの次元が高い場合、マテリアライズドビューを使用して事前集計されたメトリクス層を作成できます。
-
広いテーブルのジョイン
マテリアライズドビューを使用すると、複数の大規模な広いテーブルのジョインを含む複雑なシナリオでクエリを透明に高速化できます。
-
データレイクでのクエリアクセラレーション
外部カタログベースのマテリアライズドビューを構築することで、データレイク内のデータに対するクエリを簡単に高速化できます。
注意
JDBC カタログ内のベー ステーブルに作成された非同期マテリアライズドビューは、クエリの書き換えをサポートしていません。
特徴
StarRocks の非同期マテリアライズドビューに基づく自動クエリの書き換えは、次の属性を特徴としています:
- 強力なデータ整合性: ベーステーブルが内部テーブルである場合、StarRocks はマテリアライズドビューに基づくクエリの書き換えを通じて得られる結果が、ベーステーブルに対する直接クエリから返される結果と一致することを保証します。
- 古いデータの書き換え: StarRocks は古いデータの書き換えをサポートしており、頻繁なデータ変更があるシナリオに対応するために一定のデータの期限切れを許容します。
- マルチテーブルジョイン: StarRocks の非同期マテリアライズドビューは、View Delta Joins や Derivable Joins などの複雑なジョインシナリオを含むさまざまなタイプのジョインをサポートしており、大規模な広いテーブルを含むシナリオでクエリを高速化できます。
- 集計の書き換え: StarRocks は集計を含むクエリを再構成して、レポートのパフォーマンスを向上させることができます。
- ネストされたマテリアライズドビュー: StarRocks は、ネストされたマテリアライズドビューに基づく複雑なクエリを再構成することをサポートし、書き換え可能なクエリの範囲を拡大します。