你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

存活时间在 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 费率收费。

容器和项的生存时间

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

  • 设置容器的生存时间使用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 秒后过期。

后续步骤