sql實用語句sp_spaceused查詢表所佔空間大小

sp_spaceused (Transact-SQL)
SQL Server 2008 R2

 

顯示行數、保留的磁盤空間以及當前數據庫中的表、索引視圖或 Service Broker 隊列所使用的磁盤空間,或顯示由整個數據庫保留和使用的磁盤空間。javascript

主題連接圖標 Transact-SQL 語法約定html

語法

sp_spaceused [[ @objname = ] 'objname' ] 
[,[ @updateusage = ] 'updateusage' ]
參數

[ @objname =] ' objname '

請求其空間使用信息的表、索引視圖或隊列的限定或非限定名稱。僅當指定限定對象名稱時,才須要使用引號。若是提供徹底限定對象名稱(包括數據庫名稱),則數據庫名稱必須是當前數據庫的名稱。java

若是未指定 objname,則返回整個數據庫的結果。數據庫

objname 的數據類型爲 nvarchar(776),默認值爲 NULL。架構

[ @updateusage =] ' updateusage '

指示應運行 DBCC UPDATEUSAGE 以更新空間使用信息。當未指定 objname 時,將對整個數據庫運行該語句;不然,將對 objname 運行該語句。值能夠是 truefalseupdateusage 的數據類型爲 varchar(5),默認值爲 falseide

返回代碼值

0(成功)或 1(失敗)this

結果集

若是省略 objname ,將返回如下結果集,以提供當前數據庫大小信息。spa

 

列名 數據類型 說明

database_name日誌

nvarchar(128)code

當前數據庫的名稱。

database_size

varchar(18)

當前數據庫的大小 (MB)。database_size 包括數據和日誌文件。

unallocated space

varchar(18)

未保留供數據庫對象使用的數據庫空間。

 

列名 數據類型 說明

reserved

varchar(18)

由數據庫中對象分配的空間總量。

數據

varchar(18)

數據使用的空間總量。

index_size

varchar(18)

索引使用的空間總量。

unused

varchar(18)

爲數據庫中的對象保留但還沒有使用的空間總量。

若是指定 objname,則將爲指定對象返回如下結果集。

 

列名 數據類型 說明

name

nvarchar(128)

請求其空間使用信息的對象的名稱。

不返回對象的架構名稱。若是須要架構名稱,請使用 sys.dm_db_partition_statssys.dm_db_index_physical_stats 動態管理視圖獲取等價大小信息。

rows

char(11)

表中現有的行數。若是指定的對象是 Service Broker 隊列,該列將指示隊列中的消息數。

reserved

varchar(18)

objname 保留的空間總量。

數據

varchar(18)

objname 中的數據所使用的空間總量。

index_size

varchar(18)

objname 中的索引所使用的空間總量。

unused

varchar(18)

objname 保留但還沒有使用的空間總量。

註釋

database_size 將始終大於 reserved + unallocated_space 之和,由於該值包括日誌文件的大小,而 reservedunallocated_space 只考慮數據頁。

在這兩個結果集的 index_size 中,都包括了 XML 索引和全文索引使用的頁。當指定 objname 時,對象的 XML 索引和全文索引所使用的頁將計算在 reservedindex_size 結果中。

若是爲具備空間索引的數據庫或對象計算空間使用狀況,則空間大小列(例如 database_sizereservedindex_size)將包含空間索引的大小。

指定 updateusage 時,SQL Server 數據庫引擎將掃描數據庫中的數據頁,並根據每一個表所使用的存儲空間對 sys.allocation_unitssys.partitions 目錄視圖進行必要的更正。在某些狀況下(例如刪除索引後、表的空間信息不是當前信息時),須要執行該操做。updateusage 在大型表或數據庫上運行會花費一些時間。只有當懷疑所返回的值不正確,並且該進程對數據庫中的其餘用戶或進程沒有負面影響時,才應使用 updateusage。若是首選該進程,則能夠單獨運行 DBCC UPDATEUSAGE。

ms188776.note(zh-cn,SQL.105).gif注意:
在刪除或從新生成大型索引時,或者在刪除或截斷大型表時,數據庫引擎將延遲實際頁釋放及其關聯鎖,直至事務提交完畢爲止。延遲的刪除操做不會當即釋放已分配的空間。所以,刪除或截斷一個大型對象後 sp_spaceused 隨即返回的值可能不會影響可用的實際磁盤空間。有關延遲分配的詳細信息,請參閱刪除並從新生成大型對象

 

 

權限

執行 sp_spaceused 的權限授予 public 角色。只有 db_owner 固定數據庫角色的成員能夠指定 @updateusage 參數。

示例

A. 顯示錶的磁盤空間信息

如下示例報告 Vendor 表及其索引的磁盤空間信息。

USE AdventureWorks2008R2;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO

B. 顯示數據庫的已更新空間信息

下例對當前數據庫中使用的空間進行了彙總,並使用可選參數 @updateusage 確保返回當前值。

USE AdventureWorks2008R2;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO
相關文章
相關標籤/搜索