SQL Server 数据文件空间使用计算方法

按照区统计

dbcc showfilestats

  这个命令能直接从GAM和SGAM这样的系统分配页面上读取区分配信息,直接算出数据库文件里有多少区已被分配。在服务器负载很高的情况下也能安全执行,不会增加额外系统负责。

按照页面统计

sp_spaceused

  根据sys.allocation_units和sys.partitions这两个管理视图来计算存储空间。可以指定updateusage这个参数,要求SQL Server更新管理视图里的统计信息,这是一件消耗资源的工作。

通过查询sys.dm_db_partitions_stats查询数据库所有对象

select
 o.name,
 sum(p.reserved_page_count) as reserved_page_count,
 sum(p.used_page_count) as used_page_count,
 sum(
  case
   when (p.index_id < 2) then (p.in_row_data_page_count + p.lob_used_page_count + p.row_overflow_used_page_count)
  end
  )as dataPages,
 sum(
  case
   when (p.index_id < 2 ) then row_count
   else 0
  end
  )as rowCounts
from sys.dm_db_partition_stats p inner join sys.objects o On p.object_id = o.object_id
group by o.name

 DBCC ShowContig和sys.dm_db_index_physical_stats

  是检查数据空间分配情况最精确的该当,它可以告诉你某张表(或索引)用了多少页面,多少区,甚至页面上平均数据量,这种方式在数据库处于工作高峰时应避免使用。

命令 精确单位 性能影响 准确性
DBCC ShowFileStats 基本准确
sp_spaceused 有时不准确
sp_spaceused + updateusage 稍有 基本准确
sys.dm_db_partition_stats 有时不准确
dbcc showcontig 页/区 准确

SQL Server 数据文件空间使用计算方法,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。