本文介紹如何管理物化視圖。
修改物化視圖
許可權要求
需要有物化視圖的ALTER許可權。
文法
ALTER MATERIALIZED VIEW <mv_name>
[MV_PROPERTIES=<MV_PROPERTIES>]
[<ENABLE|DISABLE> QUERY REWRITE]
MV_PROPERTIES
:彈性物化視圖的屬性,僅支援mv_resource_group和mv_refresh_hints參數。詳情請參見MV_PROPERTIES。重要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
:開啟或關閉查詢智能改寫功能。
樣本
開啟物化視圖
myview1
的查詢智能改寫功能。ALTER MATERIALIZED VIEW myview1 ENABLE QUERY REWRITE;
修改彈性物化視圖
myview9
所使用的資源群組。ALTER MATERIALIZED VIEW myview9 MV_PROPERTIES='{ "mv_resource_group":"my_job_rg_2", "mv_refresh_hints":{"query_priority":"HIGH"} }'
查看物化視圖定義
查看建立物化視圖的DDL語句。
許可權要求
需要有物化視圖的SELECT許可權。
文法
SHOW CREATE MATERIALIZED VIEW <mv_name>
樣本
查看建立物化視圖myview2
的DDL語句。
SHOW CREATE MATERIALIZED VIEW myview2;
查看物化視圖
查看當前資料庫中所有具有SELECT許可權的物化視圖列表。如果有指定Pattern,則返回匹配該Pattern的所有物化視圖。
許可權要求
需要有物化視圖的SELECT許可權。
文法
SHOW MATERIALIZED VIEWS [LIKE 'pattern']
樣本
查看當前資料庫中所有的物化視圖。
SHOW MATERIALIZED VIEWS;
刪除物化視圖
物化視圖不能使用DROP TABLE語句刪除。
許可權要求
需要有物化視圖的DROP許可權。
文法
DROP MATERIALIZED VIEW <mv_name>
樣本
刪除物化視圖myview4
。
DROP MATERIALIZED VIEW myview4;
物化視圖資訊表
information_schema.mv_info
所有物化視圖的元資訊。
常用欄位的解釋如下表所示:
欄位
描述
MV_SCHEMA
物化視圖的所在庫名。
MV_NAME
物化視圖的名稱。
MV_DEFINITION
物化視圖表屬性的DDL。
MV_QUERY
物化視圖查詢部分的SQL。
FIRST_REFRESH_TIME
如果已配置自動重新整理,則表示首次重新整理的時間。
NEXT_REFRESH_TIME_FUNC
如果已配置自動重新整理,則表示下次重新整理的時間推導函數。
OWNER
物化視圖的建立者。
如果只需查看單張物化視圖定義,建議使用
SHOW CREATE MATERIALIZED VIEW
命令。使用樣本如下:
# 統計整個執行個體有多少張物化視圖 SELECT count(*) FROM information_schema.mv_info
information_schema.mv_auto_refresh_jobs
自動重新整理任務記錄。只有配置了自動重新整理功能的物化視圖才會出現在這張表裡,最多保留1024條記錄。
常用欄位的解釋如下表所示:
欄位
描述
MV_SCHEMA
物化視圖的所在庫名。
MV_NAME
物化視圖的名稱。
SCHEDULED_START_TIME
計劃啟動重新整理的時間。
START_TIME
實際啟動重新整理的時間。
END_TIME
重新整理結束的時間。
STATE
重新整理狀態。
PENDING:等待觸發重新整理。
RUNNING:重新整理中,如果很多物化視圖同時開始重新整理,狀態雖然是RUNNING,但是可能在等計算資源。
FINISHED:重新整理完成。
FAILED:重新整理失敗。重新整理失敗會自動重試,直到重試次數耗盡,那麼會跳過這次重新整理任務,等待下次重新整理。
TIMEOUT:重新整理任務進入未知狀態,遲遲沒有成功。
使用樣本如下:
# 查看 mymv 的自動重新整理記錄 SELECT * FROM information_schema.mv_auto_refresh_jobs where mv_name = 'mymv'