物化視圖建立完成後,您可以管理叢集中的所有物化視圖,包括查詢物化視圖的重新整理記錄、查詢物化視圖的定義、變更物化視圖使用的彈性資源群組、開啟或關閉查詢改寫功能、刪除物化視圖等。
查詢物化視圖的定義
查詢建立物化視圖的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]
[RENAME <new_mv_name>]
[BINLOG={TRUE|FALSE}]
-
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:開啟或關閉查詢改寫功能。 -
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;