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

按分区键值删除项 - SQL API(预览版)

适用于:SQL API

本文介绍如何使用 Cosmos SDK 按逻辑分区键值删除所有项。

功能概述

按分区键删除功能是一项异步后台操作,它允许你使用 Comsos SDK 删除具有相同逻辑分区键值的所有文档。

因为要删除的文档数量可能很大,该操作在后台运行。 虽然物理删除操作在后台运行,但效果会立即显现,因为要删除的文档不会显示在查询或读取操作的结果中。

为了帮助限制此后台任务使用的资源,按分区键删除操作限制为每秒最多消耗容器中可用 RU/s 总数的 10%。

入门

若要使用该功能,必须在预览版中注册你的 Cosmos 帐户。 若要注册,请通过 Azure 订阅概述页中的预览功能页提交 DeleteAllItemsByPartitionKey 功能请求。

显示在“预览功能”边栏选项卡中注册“按分区键删除所有项”的屏幕截图。

代码示例

使用 Azure Cosmos DB .NET SDK 3.25.0-preview(或更高预览版)按分区键删除项。

// Suppose our container is partitioned by tenantId, and we want to delete all the data for a particular tenant Contoso

// Get reference to the container
var container = cosmosClient.GetContainer("DatabaseName", "ContainerName");

// Delete by logical partition key
ResponseMessage deleteResponse = await container.DeleteAllItemsByPartitionKeyStreamAsync(new PartitionKey("Contoso"));

 if (deleteResponse.IsSuccessStatusCode) {
    Console.WriteLine($"Delete all documents with partition key operation has successfully started");
}

常见问题解答 (FAQ)

按分区键删除操作的结果是否会立即反映出来?

是的,一旦按分区键删除操作开始,要删除的文档就不会显示在查询或读取操作的结果中。 这也意味着,你可以使用与要删除的文档相同的 ID 和分区键写入新文档,而不会导致冲突。

有关例外情况,请参阅已知问题

如果我发出一个按分区键删除操作,然后立即使用相同的分区键写入一个新文档,会发生什么情况?

发出按分区键删除操作后,只会删除容器中在该时间点存在的具有该分区键值的文档。 任何传入的新文档都不在删除范围内。

与针对容器执行的其他操作相比,按分区键删除操作的优先级如何?

默认情况下,按分区键值删除操作最多可以消耗保留的一部分资源 - RU/s 总数的 0.1,即 10%。 此桶中未使用的任何请求单位 (RU) 可用于其他非后台操作,例如读取、写入和查询。

例如,假设你在容器上预配了 1000 RU/s。 正在进行的按分区键删除操作每秒消耗 100 RU 并持续 5 秒。 在这 5 秒钟内,每秒有 900 RU 可用于非后台数据库操作。 该删除操作完成后,所有 1000 RU/s 再次可用。

已知问题

在某些情况下,无法保证按分区键删除操作的效果可立即反映出来。 随着操作的进行,可能会看到一部分效果。

  • 在按分区键删除操作正在进行期间发出的、使用索引的聚合查询(例如 COUNT 查询)可能包含要删除的文档的结果。 这种情况可能发生在删除操作彻底完成之前。
  • 在按分区键删除操作正在进行期间对分析存储发出的查询可能包含要删除的文档的结果。 这种情况可能发生在删除操作彻底完成之前。
  • 连续备份(时间点还原)- 在按分区键删除操作正在进行期间触发的还原可能包含要在已还原集合中删除的文档的结果。 如果你的方案需要连续备份,建议不要使用此预览功能。

如何提供反馈或报告问题/bug

  • 将包含问题或反馈的电子邮件发送到 cosmosPkDeleteFeedbk@microsoft.com。

SDK 要求

查找支持此功能的最新版 SDK。

SDK 支持的版本 包管理器链接
.NET SDK v3 >= 3.25.0-preview(必须是预览版) https://www.nuget.org/packages/Microsoft.Azure.Cosmos/
Java SDK v4 >= 4.19.0(API 标记为 beta) https://mvnrepository.com/artifact/com.azure/azure-cosmos

计划未来支持其他 SDK。

后续步骤

请参阅以下文章了解 Azure Cosmos DB 中的其他 SDK 操作。