生命周期

更新时间:
复制 MD 格式

MaxCompute表的生命周期(Lifecycle),指表(分区)数据从最后一次更新的时间算起,在经过指定的时间后没有变动,则此表(分区)将被MaxCompute自动回收。这个指定的时间就是生命周期。通过设置生命周期可以实现自动数据清理或数据保留,降低存储成本。

基本定义与作用

  • 单位与取值:生命周期以“天”为单位,取值为正整数。

  • 功能:提供定期自动回收表或分区的功能。

回收规则

  • 计时起点:生命周期的计算从表或分区的最后一次数据修改时间(LastModifiedTime)开始。

  • 触发条件

    LastModifiedTime需要超过生命周期指定的时间才会回收。即(当前时间 - LastModifiedTime) > 生命周期天数 时,表或分区才会被纳入回收范围。

  • 执行机制

    回收操作由系统每天定时启动,扫描全量表和分区。实际回收时间取决于服务的繁忙程度,不保证在到期后立刻执行数据生命周期达到删除时间点后,数据会在24小时内被删除。

  • 示例

    假设某个分区表生命周期为1天,该分区数据最后一次被修改的时间是2026021715。如果在2026021815之前扫描此表(不到一天),则不会回收表分区。如果20260219日扫描时发现表分区LastModifiedTime超过生命周期指定的时间,则上述分区会被回收。

不同表类型的适用规则

  • 非分区表

    • 生命周期作用于整张表。

    • 创建表时即可指定生命周期,如果没有为表指定生命周期,则表(分区)不会根据生命周期规则被MaxCompute自动回收。

    • 如果表数据在生命周期内没有被修改,经过指定天数后整张表将会被MaxCompute自动回收(类似DROP TABLE操作)。

    • 删除表后,表的所有属性信息全部会被删除,包括生命周期。新建同名表后,表的生命周期以新设置的属性为准。

  • 分区表

    • 生命周期作用于每个独立的分区。但是只能在表级别设置生命周期,不能在分区级别设置生命周期。为分区表指定的生命周期适用于该表的所有分区。

    • 创建表时即可指定生命周期,如果没有为表指定生命周期,则分区不会根据生命周期规则被MaxCompute自动回收。

    • 在生命周期内未被修改的分区会被单独回收。

    • 不同于非分区表,分区表的最后一个分区被回收后,该表不会被删除

    • 删除表后,表的所有属性信息全部会被删除,包括生命周期。新建同名表后,表的生命周期以新设置的属性为准。

审计与监控

  • 执行主体

    执行生命周期回收数据操作的用户是阿里云服务账号:maxcompute.aliyuncs.com

  • 操作记录

    可以在操作审计服务中获取相关操作记录,详情请参见事件查询快速入门。例如,可看到类似“表bettergithubanalytics.test_lifecycle依据生命周期被MaxCompute自动回收”的记录。

    非分区表自动回收

    bettergithubanalytics.test_lifecycle依据生命周期被MaxCompute自动回收,可看到如下记录。

    在操作审计(ActionTrail)事件详情页面中,事件解读提示阿里云服务(maxcompute.aliyuncs.com)调用了大数据计算服务的 DropTable 接口。基本信息中事件名称为 DropTable,用户名为 maxcompute.aliyuncs.com(表明该操作由系统服务自动发起),事件时间为 2022 年 12 月 11 日 11:21:11。相关资源包含两条记录:

    • 表(ACS::MaxCompute::Table):test_lifecycle

    • 项目空间(ACS::MaxCompute::Project):bettergithubanalytics

    
    {
    "eventType": "TableEvent",
    "referencedResources": { // 事件影响的资源列表
        "ACS::MaxCompute::Table": [
            "test_lifecycle"
        ],
        "ACS::MaxCompute::Project": [
            "bettergithubanalytics"
        ]
    },
    "userIdentity": { // 请求者的身份信息
        "accountId": "xxx", // 阿里云主账号 ID
        "type": "system", // 阿里云服务
        "userName": "maxcompute.aliyuncs.com"
    },
    "serviceName": "MaxCompute", // 事件相关的云服务名称
    "additionalEventData": {
        "TableName": "test_lifecycle",
        "ProjectName": "bettergithubanalytics",
        "OperationText": "RECYCLE_TABLE"
    },
    "requestId": "3b85e8ed-6c4a-4680-b386-4afd90dd6972",
    "eventTime": "2022-12-11T03:21:11Z", // 事件的发生时间 (UTC 格式)
    "isGlobal": false,
    "acsRegion": "cn-beijing", // 阿里云地域
    "eventName": "DropTable" // 事件名称
    }

    分区表自动回收分区

    bettergithubanalytics.sale_detail的分区sale_date=2013/region=china依据生命周期被MaxCompute自动回收,可看到如下记录。

    在操作审计(ActionTrail)事件详情页面,事件解读显示阿里云服务调用了大数据计算服务的 ChangeTable 接口。基本信息中,事件名称为 ChangeTable,事件源为大数据计算服务,用户名为 maxcompute.aliyuncs.com相关资源区域列出两条关联资源:

    • 资源类型(ACS::MaxCompute::Table),资源名称 sale_detail

    • 资源类型项目空间(ACS::MaxCompute::Project),资源名称 bettergithubanalytics

    以下 JSON 示例展示了系统服务(type: system)执行 RECYCLE_PARTITION 操作的事件详情,其中 userIdentity.typesystem 表示该操作由阿里云服务自动触发:

    
    {
    "referencedResources": {
      "ACS::MaxCompute::Table": [
        "sale_detail"
      ],
      "ACS::MaxCompute::Project": [
        "bettergithubanalytics"
      ]
    },
    "userIdentity": {
      "accountId": "xxx",
      "type": "system",
      "userName": "maxcompute.aliyuncs.com"
    },
    "serviceName": "MaxCompute",
    "additionalEventData": {
      "TableName": "sale_detail",
      "Partition": "sale_date=2013/region=china",
      "ProjectName": "bettergithubanalytics",
      "OperationText": "RECYCLE_PARTITION"
    },
    "requestId": "884d49e0-7343-422e-899a-599628229617",
    "eventTime": "2022-12-11T03:21:11Z",
    "isGlobal": false,
    "acsRegion": "cn-beijing",
    "eventName": "ChangeTable"
    }

相关文档

  • 关于建表时如何指定、修改表生命周期、修改表LastModifiedTime等操作,请参见表操作

  • 更多关于生命周期的操作,例如对已有表或新建表设置生命周期、禁止或恢复生命周期操作,请参见生命周期操作

  • 表分区的回收操作记录也支持使用DataWorks的数据地图功能查看,详情请参见数据地图概述。其显示操作人账号为MaxCompute系统账号odps_user@aliyun.com,即名称为maxcompute.aliyuncs.com的阿里云服务。

    数据变更记录表格展示分区操作的变更详情,包含以下字段:

    • 变更描述:例如 删除分区:sale_date=2013/region=china

    • 变更类型:例如删除分区

    • 粒度:例如 PARTITION

    • 时间:操作执行的时间

    • 操作人:执行操作的用户账号,例如 odps_user@aliyun.com