瞭解 Blob 快照集如何累算費用

建立快照集 (即 Blob 的唯讀複本) 可能會為您的帳戶產生額外的資料儲存體費用。 在設計應用程式時,務必了解這些費用如何產生,以便將不必要的成本降到最低。

重要計費考量

下列清單包含建立快照集時要考量的重點。

  • 唯一的區塊或頁面會產生費用,無論它們是在 Blob 或是快照集中。 在您更新快照集所依據的 Blob 之前,您的帳戶不會針對與該 Blob 相關聯的快照集產生額外費用。 一旦您更新基底 Blob,它就會從快照集分出來,這樣一來就會針對每個 Blob 或快照集中唯一的區塊或頁面向您收費。

  • 當您取代區塊 Blob 內的某個區塊時,後續即會將該區塊視為唯一區塊進行收費。 即使該區塊的區塊識別碼和資料與其在快照集中擁有的相同,也是如此。 一旦再次認可區塊,它就會從任何快照集的對應項目分出來,如此就會針對其資料向您收費。 這同樣適用分頁 Blob 中以相同資料更新的頁面。

  • 藉由呼叫 UploadFileUploadTextUploadStreamUploadByteArray 方法來取代區塊 Blob,會取代該 Blob 中的所有區塊。 如果您有與該 Blob 相關聯的快照集,則基底 Blob 和快照集中的所有區塊現在都會分出來,而且會就這兩個 Blob 中的所有區塊向您收費。 即使基底 Blob 和快照集中的資料保持一致,也是如此。

  • Azure Blob 服務未提供方法來判斷兩個區塊是否包含相同資料。 已上傳且認可的每個區塊都會被視為唯一,即使它具有相同資料和相同的區塊識別碼也一樣。 由於唯一的區塊會產生費用,因此務必將「更新具有快照集的 Blob 將產生額外的唯一區塊及額外費用」這種情形納入考量。

重要

最佳做法是要求您謹慎管理快照集,以避免產生額外費用。 建議您採取下列方式管理快照集:

  • 每當您更新 Blob 時,刪除並重新建立與該 Blob 相關聯的快照集,除非您的應用程式設計為需要維護快照集,否則即使您正以相同資料進行更新也一樣。 藉由刪除並重新建立 Blob 的快照集,讓您可以確保該 Blob 和快照集不會分離開來。
  • 如果您要維護 Blob 的快照集,請避免呼叫 UploadFileUploadTextUploadStreamUploadByteArray 來更新 Blob,因為這些方法會取代 Blob 中的所有區塊。 請改用 PutBlockPutBlockList 方法,更新區塊的最少可能數目。

快照集計費案例

下列案例示範如何針對區塊 Blob 及其快照集產生費用。 在案例 1 中,基底 Blob 自從拍攝快照集後就未更新,因此只有唯一區塊 1、2 和 3 會產生費用:

顯示區塊在案例 1 中如何收費的圖表

案例 1:只有區塊 1、2 和 3 產生費用。

在案例 2 中,基底 Blob 已更新,但快照集並未更新。 區塊 3 已更新,而且即使它包含相同資料及相同的識別碼,它還是與快照集中的區塊 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 的快照集