全部產品
Search
文件中心

AnalyticDB:管理物化視圖

更新時間:Mar 13, 2025

物化視圖建立完成後,您可以管理叢集中的所有物化視圖,包括查詢物化視圖的重新整理記錄、查詢物化視圖的定義、變更物化視圖使用的彈性資源群組、開啟或關閉查詢改寫功能、刪除物化視圖等。

查詢物化視圖的定義

查詢建立物化視圖的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

重新整理的觸發機制。

  • DEMAND:定時自動觸發或手動觸發物化視圖的重新整理。

  • OVERWRITE:基表被覆蓋寫時觸發物化視圖的重新整理。

REFRESH_STATE

物化視圖的重新整理策略。

  • COMPLETE:全量重新整理。

  • FAST:增量重新整理。

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

重新整理狀態。

  • PENDING:等待觸發重新整理。

  • RUNNING:重新整理中,如果很多物化視圖同時開始重新整理,狀態雖然是RUNNING,但是可能在等待計算資源。

  • FINISHED:重新整理完成。

  • FAILED:重新整理失敗。重新整理失敗會自動重試,直到重試次數(10次)耗盡,那麼會跳過這次重新整理任務,等待下次重新整理。

  • TIMEOUT:重新整理任務進入未知狀態,遲遲沒有成功。TIMEOUT狀態的任務會重新重新整理。

查詢手動重新整理記錄

  • 查詢過去30天的物化視圖手動重新整理記錄,可以使用SQL審計功能。查詢時,輸入關鍵字REFRESH MATERIALIZED VIEW mv_name,可查詢手動重新整理的時間、時間長度、IP、使用者名稱等資訊。

    SQL審計功能需單獨開通。開通前的SQL操作,不會記錄在審計日誌中。

    image

  • 查詢過去14天的物化視圖手動重新整理記錄和自動重新整理記錄,可以使用SQL診斷最佳化功能。查詢時,輸入物化視圖的名稱,例如compl_mv1,可查詢該物化視圖的所有相關SQL查詢(包括建立、手動重新整理、自動重新整理、變更等)的開始時間、使用者名稱、耗時、查詢ID等。

    image

變更物化視圖

您可以將普通物化視圖變更為彈性物化視圖、變更物化視圖使用的資源群組,或開啟/關閉物化視圖的查詢改寫功能。

除此以外,物化視圖的名稱、定義、重新整理策略、重新整理觸發機制等其他屬性不支援變更。

許可權要求

物化視圖的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_groupmv_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;