物化视图可用于加速分析,并能简化ETL,适用于多种场景,例如报表类业务、大屏展示需求、来自BI工具的查询等等。云原生数据仓库 AnalyticDB MySQL 版支持在创建物化视图时指定Job型资源组,并使用Job型资源组的弹性能力刷新物化视图。本文主要介绍如何创建、修改并查询弹性物化视图。
前提条件
AnalyticDB for MySQL集群需同时满足以下条件:
集群的产品系列为湖仓版。
集群内核版本需为3.1.9.3及以上版本。
说明如何查看集群内核版本,请参见如何查看实例版本信息。如需升级内核版本,请联系技术支持。
已在湖仓版集群中创建Job型资源组。具体操作,请参见新建资源组。
创建弹性物化视图
创建物化视图时,需要具备以下权限:
需要有数据库或表级别的CREATE权限。
需要有数据库或表级别的INSERT权限。
需要有物化视图所涉及的所有表的相关列(或整个表)的SELECT权限。
如果在创建物化视图时指定物化视图为自动刷新模式,需要具备通过服务器本地(即
127.0.0.1
)或者任意IP(即'%'
)刷新视图的权限。
语法
CREATE [OR REPLACE] MATERIALIZED VIEW <mv_name>
[MV DEFINITION]
[MV_PROPERTIES=<MV_PROPERTIES>]
[REFRESH [COMPLETE|FAST] [ON [DEMAND |OVERWRITE] [START WITH date] [NEXT date]]]
AS
<QUERY BODY>;
参数说明
MV_PROPERTIES属性目前只支持mv_resource_group和mv_refresh_hints参数,格式为JSON。说明如下:
mv_resource_group:指定弹性物化视图所使用的弹性资源组。创建与刷新弹性物化视图都会使用该资源组。若指定的弹性型资源组不存在,创建弹性物化视图时会报错。
mv_refresh_hints:弹性物化视图支持配置的参数。例如query_priority,格式为JSON。
更多参数,请参见关键字说明。
示例
创建弹性物化视图mv0,每天刷新一次,弹性资源组为my_job_rg_1。
CREATE MATERIALIZED VIEW mv0
MV_PROPERTIES='{
"mv_resource_group":"my_job_rg_1",
"mv_refresh_hints":{"query_priority":"HIGH"}
}'
REFRESH COMPLETE ON DEMAND
START WITH now()
NEXT now() + INTERVAL 1 DAY
AS
SELECT * FROM base0;
修改弹性物化视图
语法
ALTER MATERIALIZED VIEW <mv_name> MV_PROPERTIES=<MV_PROPERTIES>;
ALTER语句中配置的<MV_PROPERTIES>属性会整体覆盖创建弹性物化视图时配置的<MV_PROPERTIES>属性。
例如:创建弹性物化视图时同时配置了mv_resource_group和mv_refresh_hints参数,ALTER语句中仅配置mv_resource_group参数,执行该语句后,mv_resource_group参数被修改,mv_refresh_hints参数会被清除。
参数说明
<MV_PROPERTIES>:弹性物化视图的属性,仅支持mv_resource_group和mv_refresh_hints参数。详情,请参见参数说明。
示例
修改弹性物化视图所使用的资源组。
mv_resource_group和mv_refresh_hints同时配置。
ALTER MATERIALIZED VIEW mv0 MV_PROPERTIES='{ "mv_resource_group":"my_job_rg_2", "mv_refresh_hints":{"query_priority":"HIGH"} }'
执行该语句后,仅弹性物化视图所使用的弹性资源组变化。其他参数无变化。
仅配置mv_resource_group参数。
ALTER MATERIALIZED VIEW mv0 MV_PROPERTIES='{ "mv_resource_group":"my_job_rg_2" }'
执行该语句后,弹性物化视图所使用的资源组变化,mv_refresh_hints配置被清除。
查看弹性物化视图定义
查看弹性物化视图定义时,需要有物化视图的SELECT权限。
语法
SHOW CREATE MATERIALIZED VIEW <mv_name>;
参数说明
<mv_name>:弹性物化视图名称。
示例
查询弹性物化视图mv0的定义。
SHOW CREATE MATERIALIZED VIEW mv0;
返回创建弹性物化视图DDL语句的详细信息。