マテリアライズドビューを作成するときに、更新方法を指定できます。
必要な権限。
ビューを作成するには、データベースまたはテーブルに対するcreate権限が必要です。
マテリアライズドビューを更新するには、データベースまたはテーブルに対するINSERT権限が必要です。
関連するテーブル列またはマテリアライズドビューに含まれるすべてのテーブルに対するSELECT権限が必要です。
作成したマテリアライズドビューの自動更新を構成する場合は、オンプレミスサーバー (
127.0.0.1
) またはIPアドレス ('%'
) を使用してビューを更新する権限が必要です。
提案
クラスターに基本仕様のみがある場合、安定性の問題を防ぐために、すべてのマテリアライズドビューを同時に更新しないことをお勧めします。
マテリアライズドビューを作成するときの更新方法の指定
CREATE [OR REPLACE] MATERIALIZED VIEW <mv_name>
[MV DEFINITION]
[REFRESH [COMPLETE|FAST] [ON [DEMAND |OVERWRITE] [START WITH date] [NEXT date]]]
[QUERY REWRITE]
AS
<QUERY BODY>;
具体化されたビューを更新するには、フルリフレッシュ (COMPLETE) および増分リフレッシュ (FAST) の方法を使用できます。 リフレッシュ方法を指定しない場合は、フルリフレッシュが使用されます。 フルリフレッシュは、リフレッシュ時にクエリ結果を計算し、元の結果を上書きします。
説明V3.1.9.0以降のAnalyticDB For MySQLクラスターの場合、単一のテーブルに基づいて定義されたマテリアライズドビューに対して増分更新を実行できます。 V3.2.0.0以降のAnalyticDB For MySQLクラスターの場合、複数のテーブルに基づいて定義されたマテリアライズドビューに対して増分更新を実行できます。 詳細については、「マテリアライズドビューの増分更新の設定 (プレビュー) 」をご参照ください。
AnalyticDB for MySQLのマイナーバージョンを照会するには Data Lakehouse Editionクラスターで、
SELECT adb_version();
文を実行します。 クラスターのマイナーバージョンを更新するには、テクニカルサポートにお問い合わせください。AnalyticDB For MySQL Data Warehouse Editionクラスターのマイナーバージョンを表示および更新する方法については、「クラスターのマイナーバージョンの更新」をご参照ください。
具体化されたビューのリフレッシュは、次のモードのいずれかに基づいてトリガーできます。 ON DEMANDを指定すると、オンデマンドでマテリアライズドビューの更新をトリガーできます。 ON OVERWRITEを指定した場合、INSERT OVERWRITEステートメントを実行してマテリアライズドビューに含まれるベーステーブルが上書きされると、マテリアライズドビューに対して自動更新がトリガーされます。 トリガーモードを指定しない場合は、オンデマンドが使用されます。
フルリフレッシュ
フルリフレッシュは手動または自動で実行できます。
シナリオ
フルリフレッシュは、次のバッチ処理シナリオに適しています。
データは毎日または1時間に1回更新されます。 このシナリオでは、完全更新で複雑なSQL文を処理できます。
クエリには、分レベルのレイテンシが許可されます。 このシナリオでは、特定のクエリの完全な更新を12秒以内に完了できます。
例
マテリアライズドビューを手動で更新します。
CREATE MATERIALIZED VIEW my_mv1 REFRESH COMPLETE AS SELECT * FROM base;
REFRESH MATERIALIZED VIEW my_mv;
毎日02:00:00にオンデマンドでトリガーされるように自動更新を設定します。
CREATE MATERIALIZED VIEW my_mv2 REFRESH COMPLETE ON DEMAND START WITH DATE_FORMAT(now() + interval 1 day, '%Y-%m-%d 02:00:00') NEXT DATE_FORMAT(now() + interval 1 day, '%Y-%m-%d 02:00:00') AS SELECT * FROM base;
説明リフレッシュが間隔よりも長く、次のオートリフレッシュ時点で完了していない場合、システムは2回目のオートリフレッシュをスキップし、次の時点でビューをリフレッシュする。
たとえば、自動更新は、00:05:00、00:10:00、00:15:00の時点で開始するように設定されています。 間隔は5分です。 更新が00:05:00に開始され、00:12:00まで完了しない場合、00:10:00のスケジュール更新はスキップされ、次の更新は00:15:00に開始されます。
INSERT OVERWRITEステートメントを実行して、ベーステーブルが上書きされた後に自動更新を設定します。
マテリアライズドビューを作成します。
CREATE MATERIALIZED VIEW my_mv3 REFRESH COMPLETE ON OVERWRITE AS SELECT * FROM base;
INSERT OVERWRITE
ステートメントを実行して、マテリアライズドビューに含まれるベーステーブルを上書きすると、自動リフレッシュがトリガーされます。INSERT OVERWRITE base SELECT * FROM t0;
増分リフレッシュ
増分リフレッシュは、オンデマンドでのみ自動的に実行できます。 増分更新の詳細については、「マテリアライズドビューの増分更新の設定 (プレビュー) 」をご参照ください。
関連ドキュメント
マテリアライズドビューの作成: マテリアライズドビューの作成に使用される権限と構文について説明し、例を示します。
マテリアライズドビューの管理: マテリアライズドビューのクエリ、レコード、情報テーブルの自動更新、およびマテリアライズドビューの削除方法について説明します。
マテリアライズドビューのデータの照会: マテリアライズドビューのデータの照会方法を説明します。