自动物化视图(AutoMV)

更新时间:2025-02-19 09:46:31

随着MaxCompute的深入使用,会出现对MaxCompute表执行多次重复查询的情况,并且不同使用者之间互不知晓对方也在采用相同的计算逻辑。为了提高用户的计算效率、减少重复计算,同时加速用户计算,MaxCompute提供自动物化视图(AutoMV)能力,根据用户作业查询习惯和性能自动创建物化视图。

功能介绍

在数据仓库领域,物化视图是优化重复计算的重要手段。假设用户的业务场景中存在大量的查询语句,这些查询语句共享一些高频的、耗时计算(如JOIN/AGGREGATE)的公共子查询,利用物化视图,可以将这些公共子查询的计算结果存储于物化视图表中。后续在需要使用这些公共子查询的场合,无需再次进行计算,只需读取物化视图表即可,从而达到计算加速和节省计算资源的目的。更多关于物化视图的介绍,请参见物化视图操作

MaxCompute针对用户在物化视图的实践过程中可能出现的分析难、创建难和运维复杂等问题,推出了自动物化视图(AutoMV)功能,可以有效降低物化视图的创建难度,从而提升用户的使用体验。

MaxCompute中启用自动物化视图(AutoMV)功能后,系统将自动执行以下操作:

  1. 持续监控查询:在项目级别持续监控最近运行的查询,并识别适合作为物化视图以提高性能的公共子查询。

  2. 自动创建物化视图:周期性地根据第一步识别的结果自动创建这些物化视图。

  3. 智能查询改写:通过物化视图的查询改写功能自动改写作业的查询语句,使其直接读取自动创建的物化视图表。

  4. 自适应存储资源管理:AutoMV的自适应存储资源管理机制及自动清理机制,能够在确保不对用户项目空间所占存储造成显著增长的前提下,有效管理AutoMV所占用的存储资源。

使用限制

  • 支持地域:华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、西南1(成都)。

  • 创建AutoMV的前提是公共子查询包含如下关系代数算子之一:Project(投影)、Filter(过滤)、JOIN(连接)、Aggregate(聚合)。

  • AutoMV不支持跨项目使用假设有一个物化视图可用于两个MaxCompute项目(项目A和项目B),由于AutoMV的作用域仅限于单个项目内,因此MaxCompute会在AB中同时创建两个数据完全一致的物化视图。

  • AutoMV仅支持精确匹配。为避免作业命中查询范围更大的物化视图而导致性能变差,AutoMV在写入和使用物化视图时,只会命中数据完全等价的物化视图。

管理AutoMV开关并设置存储资源上限

您可通过MaxCompute控制台或SQL命令管理AutoMV开关,并设置AutoMV可用存储上限。手动设置AutoMV可使用的存储资源上限之后,一旦超出该上限,AutoMV将禁止继续向已创建的物化视图中写入数据。

说明

仅当占用存储量不超过系统设定的可用存储阈值(即存储资源上限)时,才会生成物化视图。

通过控制台设置
通过命令设置

您可通过以下任意一种方式在MaxCompute管理控制台中管理AutoMV开关,并设置存储资源上限。

  • 创建项目时设置

    创建项目时,您可在新增项目对话框中选择是否启用自动物化视图(AutoMV),并设置autoMV可存储上限(GB),AutoMV默认为启用状态。

  • 在项目管理页面设置

    进入MaxCompute项目管理页面,单击目标项目操作列的管理,在参数配置页签的智能优化开关区域单击编辑,进行设置。

  • 在智能物化视图页面设置

    1. 进入智能优化 > 智能物化视图页面,并在物化视图页面选择自动物化视图(AutoMV)页签。

    2. 单击右侧的AutoMV开关管理,手动开启或关闭AutoMV,并设置可用存储上限(GB)。

  • 管理AutoMV开关

    您可在项目级别执行SETPROJECT odps.sql.enable.auto.mv=true/false;命令进行AutoMV开关管理,其中true表示开启AutoMV,false表示关闭。

  • 设置存储资源上限

    您可在项目级别执行如下命令设置存储资源上限,该项目将仅为AutoMV分配1024 GB的存储空间,用于存储物化视图。

SETPROJECT odps.sql.auto.mv.quota.gb=1024; 
重要
  • 使用AutoMV功能前,除了开启AutoMV开关,还需确认您的项目已开启物化视图查询改写功能,即确保您的项目已配置 SETPROJECT odps.sql.materialized.view.enable.auto.rewriting=true; 参数。通常该项配置由平台默认开启,您无需特别关心。

  • 通过控制台或SQL命令设置AutoMV可用存储上限时,取值范围为介于[0, 2147483647)区间内的整数。

  • 如果您未按上述策略手动设置AutoMV的最大存储上限,系统将默认限制由AutoMV功能创建的所有物化视图所占用的存储资源总量,不得超过项目已使用存储资源总量的2%,因此AutoMV不会对您的存储资源造成明显的增长。

查看AutoMV收益及占用存储

您可在AutoMV页签查看使用自动物化视图功能后,所节省的计算时长、CU时、计算量、计算费用等收益,及存储占用情况。

说明

通常情况下,如果您在当天21:00前启用AutoMV,后台将于第二天创建并应用AutoMV,您可在第三天查看收益及占用存储的统计值;如果您在当天21:00后启用,后台将于第三天创建并应用AutoMV,您可在第四天查看收益及占用存储的统计值。

  1. 登录MaxCompute管理控制台,在左上角选择地域。

  2. 在左侧导航栏选择智能优化 > 智能物化视图

  3. 物化视图页面的自动物化视图(AutoMV)页签,选择目标MaxCompute项目(不选,则表示所有项目)和收益统计区间,可以查看已开启AutoMV的项目收益、占用存储,以及具体的AutoMV列表。

    • 指标参数:

      指标

      说明

      指标

      说明

      命中次数

      AutoMV在收益统计区间内,被调用的次数。

      节省计算时长

      所有命中所选项目AutoMV的作业在收益统计区间内的计算时长相较于创建AutoMV前计算时长的节省值。

      节省CU

      所有命中所选项目AutoMV的作业在收益统计区间内的CU时消耗相较于创建AutoMVCU时消耗的节省值。

      节省计算量

      所有命中所选项目AutoMV的作业在收益统计区间内的计算量(扫描量*复杂度)相较于创建AutoMV前计算量(扫描量*复杂度)的节省值。仅统计使用按量付费计算资源运行的作业。

      节省计算费用(目录价)

      所有命中所选项目AutoMV的作业节省计算量 * 0.3 元/GB(按量付费标准版SQL计算单价)。

      存储占用

      AutoMV占用的存储大小。

    • AutoMV列表参数:

      列名称

      说明

      列名称

      说明

      物化视图名称

      AutoMV的名称。

      归属项目

      AutoMV所在的项目。

      命中次数

      AutoMV在收益区间内被调用的次数。

      节省计算时长

      命中该AutoMV的作业在收益统计区间内的计算时长相较于创建AutoMV前计算时长的节省值。

      节省CU

      命中该AutoMV的作业在收益统计区间内的CU时消耗相较于创建AutoMVCU时消耗的节省值。

      节省计算量

      命中该AutoMV的作业在收益统计区间内的计算量(扫描量*复杂度)相较于创建AutoMV前计算量(扫描量*复杂度)的节省值。仅统计使用按量付费计算资源运行的作业。

      存储占用

      AutoMV占用的存储大小。

      操作

      可单击查看详情,查看AutoMV的基本信息和代码详情。

      • 基本信息

        • 创建时间:AutoMV的创建时间。

        • 表结构更新时间:AutoMV的表结构更新时间。

        • 存储大小:AutoMV占用的存储大小。

      • 代码详情:定义AutoMVSQL脚本。您可以查看、复制或下载SQL脚本。

计费说明

项目开启AutoMV后,用户只需要对系统自动创建的物化视图存储按标准存储单价支付费用即可,除此之外,无附加服务费用。标准存储价格详情,请参见存储费用

说明

仅当占用存储量不超过系统设定的可用存储阈值(即存储资源上限)时,才会生成物化视图。存储资源上限设置方法,请参见管理AutoMV开关并设置存储资源上限

延伸阅读

  • 本页导读 (1)
  • 功能介绍
  • 使用限制
  • 管理AutoMV开关并设置存储资源上限
  • 查看AutoMV收益及占用存储
  • 计费说明
  • 延伸阅读