合 MSSQL中的sp_spaceused函数
Tags: MSSQLSQL Server表大小sp_spaceused
简介
sp_spaceused显示当前数据库中表、索引视图或 Service Broker 队列使用的行数、磁盘空间预留和磁盘空间,或显示整个数据库保留和使用的磁盘空间。
该结果报告包含几个重要的列,其中之一是 reserved
。reserved
列表示分配给对象(表或视图)的总空间大小,包括由数据、索引和其他对象元数据占用的空间。这个值是对象在磁盘上所占用的总空间,无论这些空间是否被实际使用。
具体来说,reserved
包括以下几个部分:
- 数据空间(data):存储表中的实际数据。
- 索引空间(index_size):存储表的索引占用的空间。
- 未分配空间(unused):保留但尚未分配给表的空间。
总的来说,reserved
反映了对象占用的总物理磁盘空间,而不考虑这些空间是否实际上已经被使用。如果要查看实际使用的空间,可以关注 data
列,该列表示实际存储的数据空间大小。
1 2 3 4 5 6 7 | -- 表信息(ALT+F1) exec sp_spaceused N'BigTable'; exec sp_helpindex N'bigtable'; exec sp_help N'bigtable'; |
语法
1 2 3 4 5 | sp_spaceused [[ @objname = ] 'objname' ] [, [ @updateusage = ] 'updateusage' ] [, [ @mode = ] 'mode' ] [, [ @oneresultset = ] oneresultset ] [, [ @include_total_xtp_storage = ] include_total_xtp_storage ] |
备注
Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。
参数
对于 Azure Synapse Analytics 和 Analytics Platform System (PDW) ,sp_spaceused
必须指定命名参数 (例如sp_spaceused (@objname= N'Table1');
,而不是依赖于参数的序号位置。
1 | [ @objname = ] 'objname' |
请求其空间使用信息的表、索引视图或队列的限定或非限定名称。 仅当指定限定对象名称时,才需要使用引号。 如果提供完全限定对象名称(包括数据库名称),则数据库名称必须是当前数据库的名称。
如果未指定 objname ,则会为整个数据库返回结果。
objname 为 nvarchar (776) ,默认值为 NULL。
备注
Azure Synapse Analytics 和 Analytics Platform System (PDW) 仅支持数据库和表对象。
[ @updateusage = ] 'updateusage'
指示应运行 DBCC UPDATEUSAGE 来更新空间使用情况信息。 如果未指定 objname ,语句将在整个数据库上运行;否则,语句在 objname 上运行。 值可以是 true 或 false。 updateusage 为 varchar (5) ,默认值为 false。
[ @mode = ] 'mode'
指示结果的范围。 对于拉伸表或数据库, mode 参数允许包含或排除对象的远程部分。 有关详细信息,请参阅 Stretch Database。