MSSQL中的sp_spaceused函数

0    207    2

Tags:

👉 本文共约9286个字,系统预计阅读时间或需35分钟。

简介

sp_spaceused显示当前数据库中表、索引视图或 Service Broker 队列使用的行数、磁盘空间预留和磁盘空间,或显示整个数据库保留和使用的磁盘空间。

该结果报告包含几个重要的列,其中之一是 reservedreserved 列表示分配给对象(表或视图)的总空间大小,包括由数据、索引和其他对象元数据占用的空间。这个值是对象在磁盘上所占用的总空间,无论这些空间是否被实际使用。

具体来说,reserved 包括以下几个部分:

  1. 数据空间(data):存储表中的实际数据。
  2. 索引空间(index_size):存储表的索引占用的空间。
  3. 未分配空间(unused):保留但尚未分配给表的空间。

总的来说,reserved 反映了对象占用的总物理磁盘空间,而不考虑这些空间是否实际上已经被使用。如果要查看实际使用的空间,可以关注 data 列,该列表示实际存储的数据空间大小。

语法

备注

Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

参数

对于 Azure Synapse Analytics 和 Analytics Platform System (PDW) ,sp_spaceused必须指定命名参数 (例如sp_spaceused (@objname= N'Table1');,而不是依赖于参数的序号位置。

请求其空间使用信息的表、索引视图或队列的限定或非限定名称。 仅当指定限定对象名称时,才需要使用引号。 如果提供完全限定对象名称(包括数据库名称),则数据库名称必须是当前数据库的名称。
如果未指定 objname ,则会为整个数据库返回结果。
objnamenvarchar (776) ,默认值为 NULL。

备注

Azure Synapse Analytics 和 Analytics Platform System (PDW) 仅支持数据库和表对象。

[ @updateusage = ] 'updateusage' 指示应运行 DBCC UPDATEUSAGE 来更新空间使用情况信息。 如果未指定 objname ,语句将在整个数据库上运行;否则,语句在 objname 上运行。 值可以是 truefalseupdateusagevarchar (5) ,默认值为 false

[ @mode = ] 'mode' 指示结果的范围。 对于拉伸表或数据库, mode 参数允许包含或排除对象的远程部分。 有关详细信息,请参阅 Stretch Database

重要

SQL Server 2022 (16.x) 中已弃用 Stretch Database。 后续版本的 Microsoft SQL Server 将删除该功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

mode 参数可以具有以下值:

Expand table

说明
ALL返回对象或数据库的存储统计信息,包括本地部分和远程部分。
LOCAL_ONLY仅返回对象或数据库的本地部分的存储统计信息。 如果对象或数据库未启用 Stretch,则返回与 = @mode ALL 时相同的统计信息。
REMOTE_ONLY仅返回对象或数据库的远程部分的存储统计信息。 如果满足以下条件之一,此选项将引发错误: 该表未为 Stretch 启用。 表已启用 Stretch,但从未启用数据迁移。 在这种情况下,远程表尚没有架构。 用户已手动删除远程表。 远程数据存档的预配返回了“成功”状态,但实际上失败了。

modevarchar (11) ,默认值为 N'ALL”。

[ @oneresultset = ] oneresultset 指示是否返回单个结果集。 oneresultset 参数可以具有以下值:

Expand table

说明
0@objname 为 null 或未指定时,将返回两个结果集。 两个结果集是默认行为。
1@objname = null 或 未指定时,将返回单个结果集。

oneresultsetbit,默认值为 0

[ @include_total_xtp_storage] 'include_total_xtp_storage'适用于:SQL Server 2017 (14.x) ,SQL 数据库。

当 为 时 @oneresultset=1,参数 @include_total_xtp_storage 确定单个结果集是否包含用于MEMORY_OPTIMIZED_DATA存储的列。 默认值为 0,即默认情况下,如果省略参数 () 结果集中不包含 XTP 列。

返回代码值

0(成功)或 1(失败)

结果集

如果省略 objnameoneresultset 的值为 0,则返回以下结果集以提供当前数据库大小信息。

Expand table

列名称数据类型说明
database_namenvarchar(128)当前数据库的名称。
database_sizevarchar (18)当前数据库的大小 (MB)。 database_size 包括数据和日志文件。
未分配的空间varchar (18)未保留供数据库对象使用的数据库空间。

Expand table

列名称数据类型说明
reservedvarchar (18)由数据库中对象分配的空间总量。
datavarchar (18)数据使用的空间总量。
index_sizevarchar (18)索引使用的空间总量。
unusedvarchar (18)为数据库中的对象保留但尚未使用的空间总量。

如果省略 objname 并且 oneresultset 的值为 1,则返回以下单个结果集以提供当前数据库大小信息。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复