批量删除是否是在 Azure 存储中执行目录删除的更好方法?

Is batch deletion a better way to perform a directory delete in Azure storage?

我想知道使用 c# 删除目录(或者就此而言只是一批 blob - 我知道 Azure 存储没有目录或文件夹的概念)的最有效方法是什么.现在我正在对一个文件夹中的所有 blob 使用并行删除(使用 Parallel.ForEach)- 总共需要 11 MB 的 420 个 blob 大约需要一分钟。

代码类似于:

Parallel.ForEach(urisToDelete.Distinct(), uri => { 
    var blobReference = await this.cloudBlobClient.GetBlobReferenceFromServerAsync(uri);
    await blobReference.DeleteAsync();
});

我正在尝试优化这个过程,但遇到了 this Microsoft's ducumentation 批量删除。在我的项目中更改它进行性能测试有点复杂。有谁知道使用这种删除方法性能是否更好?有人知道更好的方法吗?

非常感谢!

是的,通过 batch clientbatch deletion 提供了比使用 Parallel.ForEach(xxx) 更高的性能。

由于batch delete会在单个请求中批量处理多个Azure Blob Storage删除操作,确实具有更高的性能。但是使用Parallel.ForEach时,会发送很多请求,导致性能下降。

但是你应该知道使用它的限制,比如一个批处理最多只能支持256个子请求等。你可以阅读this article了解更多详细信息。

据我所知,这是删除 multi-blob-files.

的最佳性能方式