首页 > 解决方案 > 批量删除是在 Azure 存储中执行目录删除的更好方法吗?

问题描述

我想知道使用 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();
});

我正在尝试优化此过程,并且遇到了 Microsoft 的批量删除文档。在我的项目中更改它以进行性能测试有点复杂。有谁知道使用这种删除方法性能是否更好?有谁知道更好的方法?

非常感谢!

标签: c#azureazure-storageazure-blob-storage

解决方案


是的,batch deletionvia批处理客户端提供了比使用Parallel.ForEach(xxx).

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

但是你应该知道它在使用时的局限性,比如一个批次最多只能支持 256 个子请求等。你可以阅读这篇文章了解更多详细信息。

据我所知,这是删除多 blob 文件的最佳性能方式。


推荐阅读