弹性物化视图

更新时间:

物化视图可用于加速分析,并能简化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_groupmv_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_groupmv_refresh_hints参数,ALTER语句中仅配置mv_resource_group参数,执行该语句后,mv_resource_group参数被修改,mv_refresh_hints参数会被清除。

参数说明

<MV_PROPERTIES>:弹性物化视图的属性,仅支持mv_resource_groupmv_refresh_hints参数。详情,请参见参数说明

示例

修改弹性物化视图所使用的资源组。

  • mv_resource_groupmv_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语句的详细信息。