你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

了解 Blob 快照如何产生费用

创建快照(它是 Blob 的只读副本)会导致帐户产生额外的数据存储费用。 在设计应用程序时,你有必要了解在哪些情况下会产生这些费用,以便能最大程度地减少不必要的费用。

重要计费注意事项

以下列表包含创建快照时要考虑的要点。

  • 唯一的块或页面会产生费用,无论它们是在 Blob 还是快照中。 在更新快照所基于的 Blob 之前,你的帐户不会就与 Blob 关联的快照产生额外费用。 在更新基本 Blob 后,它将偏离其快照,并且将就每个 Blob 或快照中的唯一块或页向你收取费用。

  • 在替换块 Blob 中的某个块后,会将该块作为唯一块进行收费。 即使该块具有的块 ID 和数据与它在快照中所具有的 ID 和数据相同也是如此。 重新提交块后,它将偏离它在任何快照中的对应部分,并且你将就其数据支付费用。 对于使用相同的数据更新的页 Blob 中的页面,也是如此。

  • 通过调用 UploadFile、UploadTextUploadStreamUploadByteArray 方法替换块 Blob 将替换该 Blob 中的所有块。 如果你具有与该 Blob 关联的快照,则基本 Blob 和快照中的所有块现在将发生偏离,并且你需为这两个 Blob 中的所有块支付费用。 即使基本 Blob 和快照中的数据保持相同也是如此。

  • Azure Blob 服务无法确定这两个块是否包含相同的数据。 每个上传和提交的块均被视为唯一的快,即使它具有相同的数据和块 ID 也是如此。 由于唯一的块会产生费用,因此考虑到更新具有快照的 Blob 将导致产生其他唯一块和额外费用这一点很重要。

重要

最佳实践要求仔细管理快照以避免额外费用。 建议你通过以下方式管理快照:

  • 除非应用程序设计需要保留与 Blob 关联的快照,否则请在更新 Blob 时删除并重新创建这些快照,即使你使用相同的数据进行更新也是如此。 通过删除并重新创建 Blob 的快照,可以确保 Blob 和快照不会发生偏离。
  • 如果要维护 Blob 的快照,请避免调用 UploadFileUploadTextUploadStreamUploadByteArray 来更新 Blob,因为这些方法会替换 Blob 中的所有块。 相反,请使用 PutBlockPutBlockList 方法更新尽可能少的块。

快照计费方案

下列方案说明了块 Blob 及其快照如何产生费用。 在方案 1 中,基本 Blob 自拍摄快照后未进行更新,因此仅唯一块 1、2、3 会产生费用:

显示方案 1 中块如何计费的关系图

方案 1:仅块 1、2、3 产生费用。

在方案 2 中,已更新基本 Blob,但未更新快照。 已更新块 3,即使它包含相同的数据和 ID,它也与快照中的块 3 不同。 因此,帐户需要为四个块支付费用:

显示方案 2 中块如何计费的关系图

方案 2:基本 Blob 中的块 1、2 和 3 以及快照中的块 3 会产生费用。

在方案 3 中,已更新基本 Blob,但未更新快照。 块 3 已替换为基础 Blob 中的块 4,但快照仍反映块 3。 因此,帐户需要为四个块支付费用:

显示方案 3 中块如何收费的关系图

方案 3:块 1、2、3 和 4 产生费用。

在方案 4 中,已完全更新基本 Blob,并且其中不包含任何原始块。 因此,帐户需要为所有八个唯一块支付费用。 如果使用如 UploadFileUploadTextUploadFromStreamUploadByteArray 之类的更新方法,则会出现此情况,因为这些方法将替换 Blob 的所有内容。

显示方案 4 中块如何收费的关系图

方案 4:块 1、2、3、4、5、6、7 和 8 产生费用。

另请参阅

如何使用 Blob 存储服务
如何使用队列存储服务
创建 Blob 的快照