Azure表存储 - 我使用了多少数据?

时间:2016-02-18 12:25:48

标签: azure azure-storage azure-table-storage

任何人都知道我如何识别每个存储帐户中每个表中存储的数据量?

我知道我可以获得用于所有存储帐户的整体数据,但我想知道每个表的使用量。

我不认为Azure提供了开箱即用的功能,但我如何创建一些东西来解决这个问题呢?

4 个答案:

答案 0 :(得分:4)

您可以通过两种方式获取存储帐户中所有表的大小。

选项1:耗费时间的方式

请参阅Avkash Chauhan撰写的关于如何计算实体规模的优秀博客文章:http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/30/how-the-size-of-an-entity-is-caclulated-in-windows-azure-table-storage.aspx。基本上,公式是:

  

4个字节+ Len(PartitionKey + RowKey)* 2个字节+ For-Each属性(8   bytes + Len(属性名称)* 2字节+ Sizeof(.Net属性类型))

你可能做的是从所有表中获取实体。在获取实体时,您计算每个实体的大小,并且所有实体的大小总和是表存储的大小(加上一些用于存储表名的大小)。

请注意,根据存储帐户中的表格数量和其中的数据,可能需要一段时间。此外,如果从Azure外部运行此应用程序,则会产生存储事务成本和出站带宽成本。

选项2:简单方法

这是我们在应用程序中使用的内容,我们显示存储帐户(blob,文件,队列和表)的总大小。基本上,我们使用Azure Billing/Usage API。使用此API,您可以获取存储帐户大小。从此API获取数据时,数据以JSON格式返回。对于存储帐户大小,请注意此数据是累积的,即API返回的值表示记录中指示的日期/时间值上的存储帐户的大小。

每条记录都包含许多内容。在这种情况下,您感兴趣的是Meter CategoryStorage),Meter Subcategory(这取决于您的存储帐户类型)和Meter Name。您感兴趣的仪表名称为Standard IO - Table/ Queue (GB)。就获取计费数据而言,您可以以每日或每小时的粒度获取该数据。如果您以每日粒度获取数据,只需将您获得的值乘以31即可获得以GB为单位的总大小。对于每小时粒度,将您获得的值乘以744以获得总大小。 Github上有一个关于如何使用Billing / Usage API的示例应用程序,您可以在此处找到它:https://github.com/Azure/BillingCodeSamples

如果您希望看到这一点,请随意尝试我正在构建的应用程序。您可以在http://blog.cloudportam.com/cloud-portam-updates-detailed-storage-account-usage-reports上的博文中了解有关此特定功能的更多信息。

答案 1 :(得分:1)

没有内置机制来检索表的大小。您需要计算它。今天Storage Analytics metrics仅提供blob容量。

答案 2 :(得分:0)

您可以使用工具Azure Storage Manager

在“表格属性”对话框中,单击“计算”按钮。

答案 3 :(得分:0)

如果您没有太多的数据库,请在SSMS的查询窗口中为每个数据库使用此数据库:

select    
      sys.objects.name, sum(reserved_page_count) * 8.0 / 1024 [SizeInMB]
from    
      sys.dm_db_partition_stats, sys.objects
where    
      sys.dm_db_partition_stats.object_id = sys.objects.object_id

group by sys.objects.name
order by sum(reserved_page_count) DESC