マテリアライズドビューは、データウェアハウス領域におけるコア機能です。論理ビューとは異なり、マテリアライズドビューはクエリの実行結果を永続的に保存します。これにより、データ分析の高速化および抽出・変換・書き出し(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.0.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 テーブルをマテリアライズドビューまたは基盤テーブルとして使用可能になりました。
マテリアライズドビューに対して実行可能な操作は以下のとおりです。
マテリアライズドビューの顧客ユースケースについては、「マテリアライズドビューの顧客ユースケース」をご参照ください。