你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用范围: 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 秒后过期。 |