マテリアライズドビューを作成した後、AnalyticDB for MySQL クラスタ内のすべてのマテリアライズドビューを管理できます。たとえば、マテリアライズドビューのリフレッシュレコードのクエリ、マテリアライズドビューの定義のクエリ、マテリアライズドビューによって使用されるエラステイック リソースグループ の変更、クエリ書き換え機能の有効化または無効化、マテリアライズドビューの削除などを行うことができます。
マテリアライズドビューの定義のクエリ
マテリアライズドビューの作成に使用される DDL 文をクエリできます。
必要な権限
マテリアライズドビューに対する SELECT 権限が必要です。SELECT 権限を取得するには、特権アカウント を作成します。GRANT 権限を持つ 標準アカウント を作成し、[アカウント] ページで、または GRANT SELECT ON database.mv_name TO username;
文を実行することで、標準アカウント に SELECT 権限を付与することもできます。
構文
SHOW CREATE MATERIALIZED VIEW <mv_name>
例
compl_mv1
という名前のマテリアライズドビューの作成に使用される DDL 文をクエリします。
SHOW CREATE MATERIALIZED VIEW demo.compl_mv1;
マテリアライズドビューのメタデータのクエリ
information_schema.mv_info テーブルには、すべてのマテリアライズドビューのメタデータが含まれています。単一のマテリアライズドビューの定義をクエリする場合は、SHOW CREATE MATERIALIZED VIEW
文を実行することをお勧めします。
次の表に、information_schema.mv_info テーブルの一般的なフィールドを示します。
フィールド | 説明 |
MV_SCHEMA | マテリアライズドビューが存在するデータベースの名前。 |
MV_NAME | マテリアライズドビューの名前。 |
MV_DEFINITION | マテリアライズドビューの作成に使用される DDL 文。 |
MV_QUERY | マテリアライズドビューの元の SQL クエリ。 |
FIRST_REFRESH_TIME | マテリアライズドビューが自動的にリフレッシュするように構成されている場合の最初のリフレッシュ時間。 |
NEXT_REFRESH_TIME_FUNC | マテリアライズドビューが自動的にリフレッシュするように構成されている場合、次のリフレッシュ時間を推測する関数。 |
OWNER | マテリアライズドビューの作成者。 |
QUERY_SCHEMA | マテリアライズドビュー作成文が実行されるデータベースの名前。 |
REFRESH_CONDITION | マテリアライズドビューのリフレッシュトリガーメカニズム。有効な値:
|
REFRESH_STATE | マテリアライズドビューのリフレッシュポリシー。
|
UPDATE_TIME | マテリアライズドビューメタデータの現在の行が更新された時点。 |
現在のクラスタ内のマテリアライズドビューの総数をクエリする
SELECT count(*) FROM information_schema.mv_info;
すべてのマテリアライズドビューのメタデータをクエリする
SELECT * FROM information_schema.mv_info;
すべてのマテリアライズドビューのクエリ
データベース内で SELECT 権限を持つすべてのマテリアライズドビューをクエリできます。SQL パターンを指定すると、パターンに一致するすべてのマテリアライズドビューが返されます。
必要な権限
指定されたデータベース内のすべてのマテリアライズドビューに対する SELECT 権限が必要です。SELECT 権限を取得するには、特権アカウント を作成します。GRANT 権限を持つ 標準アカウント を作成し、[アカウント] ページで、または GRANT SELECT ON database.* TO username;
文を実行することで、標準アカウント に SELECT 権限を付与することもできます。
構文
現在のデータベース内のすべてのマテリアライズドビューをクエリします。
SHOW MATERIALIZED VIEWS [LIKE 'pattern']
特定のデータベース内のすべてのマテリアライズドビューをクエリします。現在のデータベース以外のデータベースを指定できます。
SELECT * FROM information_schema.mv_info WHERE mv_schema='schema_name';
例
現在のデータベース内のすべてのマテリアライズドビューをクエリします。
SHOW MATERIALIZED VIEWS;
現在のデータベース内で、名前が compl で始まるすべてのマテリアライズドビューをクエリします。
SHOW MATERIALIZED VIEWS LIKE 'compl%';
LIKE 'pattern' の構文の詳細については、「文字列関数」トピックの「LIKE」セクションをご参照ください。
demo データベース内のすべてのマテリアライズドビューをクエリします。
SELECT * FROM information_schema.mv_info WHERE mv_schema='demo';
マテリアライズドビューのリフレッシュレコードのクエリ
自動リフレッシュレコードのクエリ
次の文を実行して、開始時刻、終了時刻、ステータス、クエリ ID など、マテリアライズドビューの自動リフレッシュレコードをクエリできます。
SELECT * FROM information_schema.mv_auto_refresh_jobs WHERE mv_schema='<schema_name>' AND mv_name = '<mv_name>';
information_schema.mv_auto_refresh_jobs テーブルには、最大 1,024 件のマテリアライズドビューの自動リフレッシュレコードが含まれています。START WITH パラメータまたは NEXT パラメータを使用して定期的に自動リフレッシュするように構成されているマテリアライズドビューのみがテーブルに含まれます。
information_schema.mv_auto_refresh_jobs テーブルには、マテリアライズドビューの作成時の最初のリフレッシュレコードは含まれません。
例:
demo データベース内の compl_mv1 マテリアライズドビューのすべての自動リフレッシュレコードをクエリします。
SELECT * FROM information_schema.mv_auto_refresh_jobs WHERE mv_schema = 'demo' AND mv_name = 'compl_mv1';
demo データベース内で、保留状態の compl_mv1 マテリアライズドビューの最新の自動リフレッシュジョブをクエリします。
SELECT * FROM information_schema.mv_auto_refresh_jobs WHERE mv_schema = 'demo' AND mv_name = 'compl_mv1' AND state = 'PENDING';
次の表に、information_schema.mv_auto_refresh_jobs テーブルの一般的なフィールドを示します。
フィールド | 説明 |
MV_SCHEMA | マテリアライズドビューが存在するデータベースの名前。 |
MV_NAME | マテリアライズドビューの名前。 |
PROCESS_ID | リフレッシュジョブのクエリ ID。 |
SCHEDULED_START_TIME | リフレッシュジョブのスケジュールされた開始時刻。 |
START_TIME | リフレッシュジョブの実際の開始時刻。 |
END_TIME | リフレッシュジョブの実際の終了時刻。 |
STATE | リフレッシュジョブのステータス。有効な値:
|
手動リフレッシュレコードのクエリ
過去 30 日以内に行われたマテリアライズドビューの手動リフレッシュレコードをクエリするには、SQL 監査機能を使用します。[XIHE SQL 監査] タブのキーワードフィールドに REFRESH MATERIALIZED VIEW mv_name と入力すると、時刻、期間、IP アドレス、データベースアカウント など、手動リフレッシュレコードに関する情報を表示できます。
SQL 監査機能は個別に有効にする必要があります。SQL 監査機能が有効になる前に行われた SQL 操作は、監査ログには含まれません。
過去 14 日以内に行われたマテリアライズドビューの手動および自動リフレッシュレコードをクエリするには、SQL 診断と最適化機能を使用します。[SQL 診断と最適化] タブで
compl_mv1
などのマテリアライズドビューの名前を入力すると、開始時刻、データベースアカウント、期間、クエリ ID など、マテリアライズドビューのすべての SQL クエリに関する情報を表示できます。
マテリアライズドビューの変更
標準のマテリアライズドビューをエラステイック マテリアライズドビュー に変更したり、マテリアライズドビューによって使用される リソースグループ を変更したり、マテリアライズドビューのクエリ書き換え機能を有効または無効にしたりできます。
名前、定義、リフレッシュポリシー、リフレッシュトリガーメカニズムなど、マテリアライズドビューの他のプロパティは変更できません。
必要な権限
マテリアライズドビューに対する ALTER 権限が必要です。ALTER 権限を取得するには、特権アカウント を作成します。GRANT 権限を持つ 標準アカウント を作成し、[アカウント] ページで、または GRANT ALTER ON database.mv_name TO username;
文を実行することで、標準アカウント に ALTER 権限を付与することもできます。
構文
ALTER MATERIALIZED VIEW <mv_name>
[MV_PROPERTIES=<MV_PROPERTIES>]
[ENABLE|DISABLE QUERY REWRITE]
MV_PROPERTIES
:mv_resource_group パラメータと mv_refresh_hints パラメータを含む、マテリアライズドビューのプロパティ。mv_resource_group:マテリアライズドビューによって使用される リソースグループ。指定された リソースグループ が存在しない場合、マテリアライズドビューの作成時にエラーが発生します。
mv_refresh_hints:マテリアライズドビューのヒントパラメータ。詳細については、「構成とヒントの構成パラメータ」トピックの「一般的なヒントパラメータ」セクションをご参照ください。
重要ALTER 文で指定された
<MV_PROPERTIES>
パラメータの値は、マテリアライズドビューの作成時に指定された<MV_PROPERTIES>
パラメータの値を上書きします。たとえば、マテリアライズドビューの作成時に
mv_resource_group
パラメータとmv_refresh_hints
パラメータを構成し、マテリアライズドビューを変更するためにmv_resource_group
パラメータのみを構成するとします。ALTER 文を実行すると、mv_resource_group
パラメータは変更され、mv_refresh_hints
パラメータは削除されます。ENABLE|DISABLE QUERY REWRITE
:クエリ書き換え機能を有効または無効にします。
例
compl_mv1
マテリアライズドビューのクエリ書き換え機能を有効にします。ALTER MATERIALIZED VIEW compl_mv1 ENABLE QUERY REWRITE;
エラステイック マテリアライズドビュー
job_mv
によって使用される リソースグループ を変更します。ALTER MATERIALIZED VIEW job_mv MV_PROPERTIES='{ "mv_resource_group":"my_job_rg_2", "mv_refresh_hints":{"query_priority":"NORMAL"} }';
標準のマテリアライズドビュー
compl_mv1
をエラステイック マテリアライズドビュー に変更します。ALTER MATERIALIZED VIEW compl_mv1 MV_PROPERTIES='{ "mv_resource_group":"my_job_rg_2" }';
マテリアライズドビューの削除
マテリアライズドビューを物理的に削除すると、マテリアライズドビューと対応するデータが削除されます。
DROP TABLE 文を実行してマテリアライズドビューを削除すると、demo.myview11 is materialized view, use DROP MATERIALIZED VIEW
のような エラーメッセージ が返されます。
必要な権限
マテリアライズドビューに対する DROP 権限が必要です。DROP 権限を取得するには、特権アカウント を作成します。GRANT 権限を持つ 標準アカウント を作成し、[アカウント] ページで、または GRANT DROP ON database.mv_name TO username;
文を実行することで、標準アカウント に DROP 権限を付与することもできます。
構文
DROP MATERIALIZED VIEW <mv_name>
例
compl_mv1
マテリアライズドビューを削除します。
DROP MATERIALIZED VIEW compl_mv1;