マテリアライズドビューは、データウェアハウス領域におけるコア機能です。論理ビューとは異なり、マテリアライズドビューはクエリの結果を永続化します。これにより、データ分析を高速化し、抽出、変換、ロード (ETL) プロセスを簡素化します。レポートサービス、ダッシュボード表示、ビジネスインテリジェンス (BI) ツールからのクエリなど、さまざまなシナリオに適しています。
マテリアライズドビューの基本
マテリアライズドビューは、AnalyticDB for MySQL の内部テーブルであり、単一テーブルまたは複数テーブルのクエリから事前計算された結果を格納します。マテリアライズドビューにクエリを実行すると、データベースはベーステーブルにアクセスすることなく、事前計算された結果を直接返します。これにより、クエリの応答速度が大幅に向上します。
XIHE コンピュートエンジンのみがマテリアライズドビューを作成できます。Spark エンジンを使用してマテリアライズドビューを作成することはできません。
ベーステーブルに直接クエリを実行する場合でも、マテリアライズドビューによってパフォーマンスを向上させることができます。AnalyticDB for MySQL は、ユーザーのクエリがマテリアライズドビューで定義されたクエリと完全または部分的に一致することを検出すると、ベーステーブルに対するクエリをマテリアライズドビューに対するクエリに自動的にリライトします。これにより、事前計算された結果を使用してクエリを高速化します。
マテリアライズドビューは、最新のリフレッシュ後のデータ状態を反映するため、ベーステーブルの最新データが含まれていない場合があることにご注意ください。マテリアライズドビューは、クエリが実行されるたびにデータを自動的にリフレッシュするわけではありません。自動リフレッシュスケジュールを設定したり、ベーステーブルが上書きされたときに自動リフレッシュをトリガーしたり、手動でリフレッシュを実行したりして、データの適時性と正確性を確保できます。
次の表に、マテリアライズドビューの機能を示します。
|
リフレッシュポリシー |
ベーステーブルタイプ |
リフレッシュトリガーメカニズム |
クエリタイプ |
クエリリライト |
|
フルリフレッシュ |
|
|
任意のクエリ |
クエリリライトをサポート (V3.1.4) |
|
増分リフレッシュ (V3.1.9.0) |
|
スケジュールされた間隔での自動リフレッシュ |
|
マテリアライズドビューのユースケース
マテリアライズドビューは、定期的または繰り返し実行されるクエリを高速化するのに最適です。
-
複数のクエリに同じサブクエリが含まれる場合
リソースを大量に消費する集計関数を使用する同じサブクエリが複数のクエリに含まれている場合は、マテリアライズドビューを作成して、サブクエリのすべての結果を事前計算して格納します。クエリにそのサブクエリが含まれている場合、AnalyticDB for MySQL のクエリリライト機能が自動的にマテリアライズドビューをクエリします。これにより、クエリを高速化し、リソース消費を削減します。
-
定期的な複数テーブル結合
複数のテーブルを定期的に結合するには、結合操作用のマテリアライズドビューを作成します。マテリアライズドビューは、結合結果を事前計算して格納し、スケジュールされた間隔でデータを自動的にリフレッシュします。クエリにこの結合操作が含まれている場合、複数テーブル結合を再実行することなく、結果はマテリアライズドビューから直接返されます。これにより、クエリの応答速度が大幅に向上します。
-
データレイククエリの高速化
ユーザーが外部テーブルにクエリを実行すると、AnalyticDB for MySQL は外部テーブルに対するクエリをマテリアライズドビューに対するクエリに自動的にリライトできます。これにより、データレイク分析を高速化します。
マテリアライズドビューの主な機能更新履歴
-
V3.1.4 以降:マテリアライズドビューのクエリリライトがサポートされるようになりました。
-
V3.1.4.7 以降:
-
OR REPLACE キーワードがサポートされるようになりました。同じ名前のマテリアライズドビューが存在する場合、元のマテリアライズドビューは削除され、新しいマテリアライズドビューが作成されます。
-
マテリアライズドビューの最大数が 8 から 64 に増加しました。
-
-
V3.1.9.0 以降:単一テーブルのマテリアライズドビューの増分リフレッシュがサポートされるようになりました。
-
V3.1.9.3 以降:Enterprise Edition、Basic Edition、および Data Lakehouse Edition のクラスターでエラスティックマテリアライズドビューがサポートされるようになりました。ジョブベースのリソースグループを使用して、これらのビューを作成およびリフレッシュできます。
-
V3.2.1.0 以降:複数テーブルのマテリアライズドビューの増分リフレッシュがサポートされるようになりました。
-
V3.2.2.1 以降:増分リフレッシュをサポートするマテリアライズドビューでは、クエリ本文で MAX、MIN、AVG、APPROX_DISTINCT、および COUNT(DISTINCT) 関数がサポートされるようになりました。
-
V3.2.3.0 以降:増分リフレッシュをサポートするマテリアライズドビューでは、ベーステーブルとしてパーティションテーブルがサポートされるようになりました。
-
V3.2.3.1 以降:増分リフレッシュをサポートするマテリアライズドビューでは、ベーステーブルでの TRUNCATE 操作がサポートされるようになりました。
-
V3.2.5.0 以降:
-
増分リフレッシュをサポートするマテリアライズドビューでは、ベーステーブルでの INSERT OVERWRITE 操作がサポートされるようになりました。
-
マテリアライズドビューでバイナリロギング (binlog) を有効にできるようになりました。増分リフレッシュをサポートするマテリアライズドビューでは、他のマテリアライズドビューをベーステーブルとして使用でき、UNION ALL ステートメントがサポートされます。
-
-
V3.2.6.0 以降:増分リフレッシュをサポートするマテリアライズドビューでは、XUANWU_V2 テーブルがマテリアライズドビューまたはベーステーブルとしてサポートされるようになりました。
マテリアライズドビューに対して、次の操作を実行できます:
マテリアライズドビューのお客様事例については、「マテリアライズドビューのお客様事例」をご参照ください。