SQL Azure表大小

在mssql2005中,当我想要获得MB的表大小时,我使用EXEC sp_spaceused'table'。

有什么办法来获得SQL Azure中的特定表使用一些查询或API使用的空间?

来自Ryan Dunn http://dunnry.com/blog/CalculatingTheSizeOfYourSQLAzureDatabase.aspx

select sum(reserved_page_count) * 8.0 / 1024 [SizeInMB] from sys.dm_db_partition_stats GO 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 

第一个将给你的数据库的大小以MB为单位,第二个会做同样的事情,但是按照从最大到最小的顺序排列数据库中的每个对象。

下面是一个查询,它将通过表给出每行的总大小,行数和字节数:

 select o.name, max(s.row_count) AS 'Rows', sum(s.reserved_page_count) * 8.0 / (1024 * 1024) as 'GB', (8 * 1024 * sum(s.reserved_page_count)) / (max(s.row_count)) as 'Bytes/Row' from sys.dm_db_partition_stats s, sys.objects o where o.object_id = s.object_id group by o.name having max(s.row_count) > 0 order by GB desc 

这里是一个和上面相同的查询,但是按索引分解:

 select o.Name, i.Name, max(s.row_count) AS 'Rows', sum(s.reserved_page_count) * 8.0 / (1024 * 1024) as 'GB', (8 * 1024* sum(s.reserved_page_count)) / max(s.row_count) as 'Bytes/Row' from sys.dm_db_partition_stats s, sys.indexes i, sys.objects o where s.object_id = i.object_id and s.index_id = i.index_id and s.index_id >0 and i.object_id = o.object_id group by i.Name, o.Name having SUM(s.row_count) > 0 order by GB desc 

这样你可以有更大的上面:

  SELECT sys.objects.name, SUM(row_count) AS 'Row Count', SUM(reserved_page_count) * 8.0 / 1024 AS 'Table Size (MB)' 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 [Table Size (MB)] DESC 

资源