共用方式為

存活时间在 Azure Cosmos DB 中

适用范围: NoSQL

通过使用 生存时间(TTL),Azure Cosmos DB 会在某个时间段后自动从容器中删除项。 默认情况下,可以在容器级别设置生存时间,并基于每个项替代该值。 在容器或项级别设置 TTL 后,Azure Cosmos DB 会在自上次修改这些项以来经过的时间段后自动删除它们。 TTL 值以秒为单位进行配置。 配置 TTL 后,系统会基于 TTL 值自动删除已过期的项,不需要客户端应用程序显式发出的删除操作。 TTL 的最大值为 2,147,483,647 秒,大约相当于 24,855 天或 68 年。

过期的项将作为后台任务删除。 在 TTL 过期后,查询响应中不再显示一个项,即使尚未从容器中永久删除。 如果容器没有足够的请求单位(RU)来执行删除,则会延迟数据删除。 一旦有足够的 RU 来完成删除,数据就会被删除。

对于预配的吞吐量帐户,对过期项的删除会使用用户请求未使用的剩余 RU。

对于无服务器帐户,对过期项的删除的 RU 费率与删除项操作相同。

注意

此内容与 Azure Cosmos DB 事务存储 TTL 相关。 如果要查找通过 Azure Synapse Link 启用 NoETL HTAP 方案的分析存储 TTL,请参阅分析有效时间(TTL)。

容器和项的生存时间

生存时间值是以秒为单位设置的,解释为自上次修改项的时间的增量。 可以针对容器或容器中的项设置生存时间:

  • 设置容器的生存时间使用DefaultTimeToLive

    • 如果缺失(或设置为 null),则项不会自动过期。

    • 如果存在且值设置为“-1”(无限期),则默认情况下,项不会过期。

    • 如果存在且值设置为某个非零数字“n”,项将在上次修改“n”秒后过期。

  • 设置项目的生存时间使用ttl

    • 仅当存在且父容器未设置为 null 时 DefaultTimeToLive ,此属性才适用。

    • 如果存在,它将替代父容器的 DefaultTimeToLive 值。

生存周期配置

  • 如果容器上的 TTL 设置为 “n” ,则该容器中的项会在 n 秒后过期。 如果同一容器中的项有自己的生存时间,则将其设置为 -1(表示项不会过期)。 如果某些项目用不同的数字替代 TTL 设置,则这些项目会根据自己的配置的 TTL 值过期。

  • 如果未针对某个容器设置 TTL,则此容器中的项的生存时间不起作用。

  • 如果某个容器的 TTL 设置为 -1,则在该容器中,设置了 TTL 为 n 的某项将在 n 秒后过期,而其余的项不会过期。

示例

本部分显示分配给容器和项不同生存时间值的一些示例:

注意

不支持将项的 TTL 设置为 null。 项 TTL 值必须是小于或等于2147483647的非零正整数,或 -1 这意味着该项永不过期。 若要对项使用默认 TTL,请确保 TTL 属性不存在。

示例 1

容器的 TTL 设置为 null (DefaultTimeToLive = null)

项的 TTL 结果
缺少 ttl 属性 TTL 已禁用。 该项永不过期(默认值)。
ttl = -1 TTL 已禁用。 该项永不过期。
ttl = 2000 TTL 已禁用。 该项永不过期。

示例 2

容器的 TTL 设置为 -1 (DefaultTimeToLive = -1)

项的 TTL 结果
缺少 ttl 属性 TTL 已启用。 该项永不过期(默认值)。
ttl = -1 TTL 已启用。 该项永不过期。
ttl = 2000 TTL 已启用。 该项将在 2,000 秒后过期。

示例 3

容器的 TTL 设置为 1000 (DefaultTimeToLive = 1000)

项的 TTL 结果
缺少 ttl 属性 TTL 已启用。 该项在 1,000 秒后过期(默认值)。
ttl = -1 TTL 已启用。 该项永不过期。
ttl = 2000 TTL 已启用。 该项将在 2,000 秒后过期。

后续步骤