>我正在从BlockBlob读取一个文件。文件大小保证小于 64 MB。因此,它是单块操作。阅读文件后,我正在更改它的某些部分,并通过CloudBlockBlob的UploadFromStream功能重新上传它。我的问题是"CloudBlockBlob的UploadFromStream函数对于小于64 MB的大小是原子的吗?"。在写入过程中出现异常后,是否有可能在 Azure 存储上损坏文件?
注意:我为AppendBlobs问过类似的问题,并得到的答案是原子的。
是的,如果它小于 64MB,它是原子的,除非您并行化,因为并行化会对数据进行分块。即使对于具有块 blob 的大于 64MB 的数据,也有一个两步提交过程,因此如果上传在中间失败,您仍然处于相对良好的状态。如果我们以 4MB 块上传数据块,我们还必须提交这些块。因此,如果上传失败,我们将不会提交,您所拥有的只是一些额外的未提交块,只能通过获取阻止列表操作访问(即,它们未提交的块不可下载)。因此,对于块 blob,中间上传失败不会覆盖现有数据或损坏它。