管理物化视图
物化视图创建完成后,您可以管理集群中的所有物化视图,包括查询物化视图的刷新记录、查询物化视图的定义、变更物化视图使用的弹性资源组、开启或关闭查询改写功能、删除物化视图等。
查询物化视图的定义
查询创建物化视图的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;
- 本页导读 (1)
- 查询物化视图的定义
- 权限要求
- 语法
- 示例
- 查询物化视图的元信息
- 统计整个集群有多少张物化视图
- 查询所有物化视图的元信息
- 查询物化视图列表
- 权限要求
- 语法
- 示例
- 查询物化视图的刷新记录
- 查询自动刷新记录
- 查询手动刷新记录
- 变更物化视图
- 权限要求
- 语法
- 示例
- 删除物化视图
- 权限要求
- 语法
- 示例