すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:マテリアライズドビューの完全更新の設定

最終更新日:Sep 14, 2024

マテリアライズドビューを作成するときに、更新方法を指定できます。

必要な権限。

  • ビューを作成するには、データベースまたはテーブルに対する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; 

増分リフレッシュ

増分リフレッシュは、オンデマンドでのみ自動的に実行できます。 増分更新の詳細については、「マテリアライズドビューの増分更新の設定 (プレビュー) 」をご参照ください。

関連ドキュメント