マテリアライズドビューを作成した後、ご利用のクラスターでそれらを管理できます。これには、リフレッシュレコードと定義のクエリ、使用するリソースグループの変更、クエリリライト機能の有効化または無効化、およびそれらの削除が含まれます。
マテリアライズドビュー定義のクエリ
マテリアライズドビューの作成に使用された DDL ステートメントをクエリできます。
権限
マテリアライズドビューに対する SELECT 権限が必要です。この権限がない場合は、特権アカウントまたは GRANT 権限を持つ標準アカウントが、コンソールの アカウント管理 ページで、または次の SQL ステートメントを実行して権限を付与する必要があります: GRANT SELECT ON database.mv_name TO username;
構文
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 クエリ (query_body)。 |
|
FIRST_REFRESH_TIME |
自動リフレッシュが構成されている場合の、最初のリフレッシュ時刻。 |
|
NEXT_REFRESH_TIME_FUNC |
自動リフレッシュが構成されている場合に、次のリフレッシュ時刻を導出する関数。 |
|
OWNER |
マテリアライズドビューの作成者。 |
|
QUERY_SCHEMA |
`CREATE MATERIALIZED VIEW` ステートメントが実行されたデータベース。 |
|
REFRESH_CONDITION |
リフレッシュのトリガーメカニズム。
|
|
REFRESH_STATE |
マテリアライズドビューのリフレッシュメソッド。
|
|
UPDATE_TIME |
このメタデータ行の最終更新時刻。 |
例
-
クラスター内のマテリアライズドビューをカウントします。
SELECT count(*) FROM information_schema.mv_info; -
すべてのマテリアライズドビューのメタデータをクエリします。
SELECT * FROM information_schema.mv_info;
マテリアライズドビューの一覧表示
指定されたデータベース内で、SELECT 権限を持つマテリアライズドビューを一覧表示します。パターンを指定した場合、名前がそのパターンに一致するマテリアライズドビューのみが返されます。
権限
指定されたデータベース内のすべてのマテリアライズドビューに対する SELECT 権限が必要です。この権限がない場合は、特権アカウントまたは GRANT 権限を持つ標準アカウントが、コンソールの アカウント管理 ページで、または次の SQL ステートメントを実行して権限を付与する必要があります: GRANT SELECT ON database.* TO username;
構文
現在のデータベース内のすべてのマテリアライズドビューをクエリする:
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'` の使用方法の詳細については、「文字列関数」をご参照ください。
-
`demo` データベース内のすべてのマテリアライズドビューをクエリします。
SELECT * FROM information_schema.mv_info WHERE mv_schema='demo';
リフレッシュレコードのクエリ
自動リフレッシュレコード
構文
次の SQL ステートメントを使用して、指定されたマテリアライズドビューの自動リフレッシュレコードをクエリします。レコードには、リフレッシュの開始時刻 (START_TIME)、終了時刻 (END_TIME)、ステータス (STATE)、およびプロセス ID (PROCESS_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';
フィールド
次の表に、共通フィールドについて説明します。
|
フィールド |
説明 |
|
MV_SCHEMA |
マテリアライズドビューが配置されているデータベースの名前。 |
|
MV_NAME |
マテリアライズドビューの名前。 |
|
PROCESS_ID |
リフレッシュジョブのプロセス ID。 |
|
SCHEDULED_START_TIME |
リフレッシュジョブのスケジュールされた開始時刻。 |
|
START_TIME |
リフレッシュジョブの実際の開始時刻。 |
|
END_TIME |
リフレッシュジョブの実際の終了時刻。 |
|
STATE |
リフレッシュステータス。
|
手動リフレッシュレコード
-
SQL 監査機能を使用すると、過去 30 日間のマテリアライズドビューの手動リフレッシュのレコードをクエリできます。クエリ時に、キーワード
REFRESH MATERIALIZED VIEW mv_nameを入力すると、手動リフレッシュに関する時間、持続時間、IP アドレス、ユーザー名などの情報を検索できます。説明SQL 監査機能は別途有効にする必要があります。この機能が有効になる前に実行された SQL 操作は記録されません。
-
「SQL 診断・最適化」機能を使用して、過去 14 日間の手動リフレッシュと自動リフレッシュの両方のレコードをクエリできます。 クエリする際は、
compl_mv1などのマテリアライズドビューの名前を入力します。 関連するすべての SQL クエリ (作成、手動リフレッシュ、自動リフレッシュ、変更を含む) について、開始時刻、ユーザー名、持続時間、クエリ ID などの情報を取得できます。
マテリアライズドビューの変更
標準のマテリアライズドビューを エラスティックマテリアライズドビュー に変換したり、使用するリソースグループを変更したり、クエリリライト機能を有効または無効にしたり、名前を変更したりできます。
ビューの定義、リフレッシュポリシー、リフレッシュトリガーなど、その他のプロパティは変更できません。
権限
マテリアライズドビューに対する ALTER 権限が必要です。この権限がない場合は、特権アカウントまたは GRANT 権限を持つ標準アカウントが、コンソールの アカウント管理 ページで、または次の SQL ステートメントを実行して権限を付与する必要があります: GRANT ALTER ON database.mv_name TO username;
構文
ALTER MATERIALIZED VIEW <mv_name>
[MV_PROPERTIES=<MV_PROPERTIES>]
[ENABLE|DISABLE QUERY REWRITE]
[RENAME <new_mv_name>]
[BINLOG={TRUE|FALSE}]
-
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:クエリリライト機能を有効化または無効化します。 -
RENAME <new_mv_name>:マテリアライズドビューの名前を変更します。 -
BINLOG={TRUE|FALSE}:マテリアライズドビューの binlog 機能を有効化または無効化します。これは、クラスターカーネルバージョン 3.2.5.0 以降でサポートされています。
例
-
マテリアライズドビュー
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" }'; -
マテリアライズドビュー mv1 の名前を mv2 に変更します。
ALTER MATERIALIZED VIEW mv1 RENAME mv2;
マテリアライズドビューの削除
この操作により、マテリアライズドビューとそのデータが物理的に削除されます。
DROP TABLE を使用してマテリアライズドビューを削除した場合、エラーが返されます。エラーメッセージは demo.myview11 is materialized view, use DROP MATERIALIZED VIEW のようになります。
権限
マテリアライズドビューに対する DROP 権限が必要です。この権限がない場合は、特権アカウントまたは GRANT 権限を持つ標準アカウントが、コンソールの アカウント管理 ページで、または次の SQL ステートメントを実行して権限を付与する必要があります: GRANT DROP ON database.mv_name TO username;
構文
DROP MATERIALIZED VIEW <mv_name>
例
マテリアライズドビュー compl_mv1 を削除します。
DROP MATERIALIZED VIEW compl_mv1;