Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLAzure表大小_Azure_Size_Azure Sql Database - Fatal编程技术网

SQLAzure表大小

SQLAzure表大小,azure,size,azure-sql-database,Azure,Size,Azure Sql Database,在mssql2005中,当我想获得表的大小(以MB为单位)时,我使用EXEC sp_spaceused“table” 是否有任何方法可以使用某些查询或API获取SQL Azure中特定表使用的空间?来自Ryan Dunn 选择 总数(保留页数)*8.0/1024[SizeInMB] 从…起 sys.dm\u db\u分区\u统计 去 挑选 sys.objects.name,总和(保留页数)*8.0/1024[SizeInMB] 从…起 sys.dm\u db\u分区\u统计信息,sys.obj

在mssql2005中,当我想获得表的大小(以MB为单位)时,我使用EXEC sp_spaceused“table”

是否有任何方法可以使用某些查询或API获取SQL Azure中特定表使用的空间?

来自Ryan Dunn

选择
总数(保留页数)*8.0/1024[SizeInMB]
从…起
sys.dm\u db\u分区\u统计
去
挑选
sys.objects.name,总和(保留页数)*8.0/1024[SizeInMB]
从…起
sys.dm\u db\u分区\u统计信息,sys.objects
哪里
sys.dm\u db\u partition\u stats.object\u id=sys.objects.object\u id
按sys.objects.name分组
按总和排序(保留页数)说明

第一个将以MB为单位显示数据库的大小,第二个将以MB为单位显示数据库的大小,但将数据库中的每个对象按从大到小的顺序进行划分。

这样,您就可以将较大的对象放在顶部:

 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

以下是一个查询,它将按表为您提供总大小、行数和每行字节数:

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

这比SQL Server上使用的sp_空间要小得多(例如,只有40%左右)。这有什么原因吗?如果您使用的是ODBC连接,您如何判断后端是Azure?sum(row_count)具有欺骗性,因为它将为索引中的每一行计算1行。