批量删除是否是在 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 client 的 batch deletion
提供了比使用 Parallel.ForEach(xxx)
更高的性能。
由于batch delete
会在单个请求中批量处理多个Azure Blob Storage删除操作,确实具有更高的性能。但是使用Parallel.ForEach
时,会发送很多请求,导致性能下降。
但是你应该知道使用它的限制,比如一个批处理最多只能支持256个子请求等。你可以阅读this article了解更多详细信息。
据我所知,这是删除 multi-blob-files.
的最佳性能方式
我想知道使用 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 client 的 batch deletion
提供了比使用 Parallel.ForEach(xxx)
更高的性能。
由于batch delete
会在单个请求中批量处理多个Azure Blob Storage删除操作,确实具有更高的性能。但是使用Parallel.ForEach
时,会发送很多请求,导致性能下降。
但是你应该知道使用它的限制,比如一个批处理最多只能支持256个子请求等。你可以阅读this article了解更多详细信息。
据我所知,这是删除 multi-blob-files.
的最佳性能方式