管理物化视图

更新时间:2025-02-27 06:27:10

物化视图创建完成后,您可以管理集群中的所有物化视图,包括查询物化视图的刷新记录、查询物化视图的定义、变更物化视图使用的弹性资源组、开启或关闭查询改写功能、删除物化视图等。

查询物化视图的定义

查询创建物化视图的DDL语句。

权限要求

物化视图的SELECT权限。如无权限,则需要高权限账号或具备GRANT权限的普通账号通过控制台账号管理页面或SQL语句GRANT SELECT ON database.mv_name TO username;为您的账号授权。

语法

SHOW CREATE MATERIALIZED VIEW <mv_name>

示例

查询创建物化视图compl_mv1DDL语句。

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 WITHNEXT参数)的物化视图才会出现在这张表里。

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_groupmv_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;
  • 本页导读 (1)
  • 查询物化视图的定义
  • 权限要求
  • 语法
  • 示例
  • 查询物化视图的元信息
  • 统计整个集群有多少张物化视图
  • 查询所有物化视图的元信息
  • 查询物化视图列表
  • 权限要求
  • 语法
  • 示例
  • 查询物化视图的刷新记录
  • 查询自动刷新记录
  • 查询手动刷新记录
  • 变更物化视图
  • 权限要求
  • 语法
  • 示例
  • 删除物化视图
  • 权限要求
  • 语法
  • 示例