物化視圖建立完成後,您可以管理叢集中的所有物化視圖,包括查詢物化視圖的重新整理記錄、查詢物化視圖的定義、變更物化視圖使用的彈性資源群組、開啟或關閉查詢改寫功能、刪除物化視圖等。
查詢物化視圖的定義
查詢建立物化視圖的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 | 執行物化視圖建立語句時,所在的資料庫名。 |
REFRESH_CONDITION | 重新整理的觸發機制。
|
REFRESH_STATE | 物化視圖的重新整理策略。
|
UPDATE_TIME | 本行物化視圖元資訊的更新時間。 |
統計整個叢集有多少張物化視圖
SELECT count(*) FROM information_schema.mv_info;查詢所有物化視圖的元資訊
SELECT * FROM information_schema.mv_info;查詢物化視圖列表
查詢指定資料庫中使用者具有SELECT許可權的所有物化視圖。如果有指定Pattern,則返回匹配該Pattern的所有物化視圖。
許可權要求
指定資料庫所有物化視圖的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儲存了物化視圖的自動重新整理任務記錄,最多保留1024條記錄。僅定時自動重新整理(配置了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的物化視圖的最近一次pending狀態的重新整理任務。
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 | 本次重新整理任務的Process ID。 |
SCHEDULED_START_TIME | 計劃啟動重新整理的時間。 |
START_TIME | 實際啟動重新整理的時間。 |
END_TIME | 實際重新整理結束的時間。 |
STATE | 重新整理狀態。
|
查詢手動重新整理記錄
查詢過去30天的物化視圖手動重新整理記錄,可以使用SQL審計功能。查詢時,輸入關鍵字
REFRESH MATERIALIZED VIEW mv_name,可查詢手動重新整理的時間、時間長度、IP、使用者名稱等資訊。SQL審計功能需單獨開通。開通前的SQL操作,不會記錄在審計日誌中。

查詢過去14天的物化視圖手動重新整理記錄和自動重新整理記錄,可以使用SQL診斷最佳化功能。查詢時,輸入物化視圖的名稱,例如
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]MV_PROPERTIES:物化視圖的屬性,包括mv_resource_group和mv_refresh_hints參數。mv_resource_group:指定物化視圖所使用的資源群組。若指定的資源群組不存在,建立物化視圖時會報錯。
mv_refresh_hints:設定物化視圖的參數。支援的配置參數詳情,請參見常用Hint。
重要ALTER語句中配置的
<MV_PROPERTIES>屬性會整體覆蓋建立物化視圖時配置的<MV_PROPERTIES>屬性。例如:建立物化視圖時同時配置了
mv_resource_group和mv_refresh_hints參數,ALTER語句中僅配置mv_resource_group參數,執行該語句後,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許可權。如無許可權,則需要高許可權帳號或具備GRANT許可權的普通帳號通過控制台帳號管理頁面或SQL語句GRANT DROP ON database.mv_name TO username;為您的帳號授權。
文法
DROP MATERIALIZED VIEW <mv_name>樣本
刪除物化視圖compl_mv1。
DROP MATERIALIZED VIEW compl_mv1;