繁体   English   中英

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

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

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

代码看起来像:

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

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

非常感谢!

是的,通过批处理客户端batch deletion提供了比使用Parallel.ForEach(xxx)更高的性能。

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

但是你应该知道使用它的限制,比如一个batch最多只能支持256个子请求等等。你可以阅读这篇文章了解更多关于它的细节。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM