如何才能快速知道數據庫中每個表的大小?
2024-07-21 02:06:03
供稿:網友
sp_spaceused
顯示行數、保留的磁盤空間以及當前數據庫中的表所使用的磁盤空間,或顯示由整個數據庫保留和使用的磁盤空間。
語法
sp_spaceused [[@objname =] 'objname']
[,[@updateusage =] 'updateusage']
參數
[@objname =] 'objname'
是為其請求空間使用信息(保留和已分配的空間)的表名。objname 的數據類型是 nvarchar(776),默認設置為 null。
[@updateusage =] 'updateusage'
表示應在數據庫內(未指定 objname 時)還是在特定的對象上(指定 objname 時)運行 dbcc updateusage。值可以是 true 或 false。updateusage 的數據類型是 varchar(5),默認設置為 false。
返回代碼值
0(成功)或 1(失?。?br>
結果集
如果省略 objname,則返回兩個結果集。
列名 數據類型 描述
database_name varchar(18) 當前數據庫的名稱。
database_size varchar(18) 當前數據庫的大小。
unallocated space varchar(18) 數據庫的未分配空間。
列名 數據類型 描述
reserved varchar(18) 保留的空間總量。
data varchar(18) 數據使用的空間總量。
index_size varchar(18) 索引使用的空間。
unused varchar(18) 未用的空間量。
如果指定參數,則返回下面的結果集。
列名 數據類型 描述
name nvarchar(20) 為其請求空間使用信息的表名。
rows char(11) objname 表中現有的行數。
reserved varchar(18) 為 objname 表保留的空間總量。
data varchar(18) objname 表中的數據所使用的空間量。
index_size varchar(18) objname 表中的索引所使用的空間量。
unused varchar(18) objname 表中未用的空間量。
注釋
sp_spaceused 計算數據和索引使用的磁盤空間量以及當前數據庫中的表所使用的磁盤空間量。如果沒有給定 objname,sp_spaceused 則報告整個當前數據庫所使用的空間。
當指定 updateusage 時,microsoft? sql server? 掃描數據庫中的數據頁,并就每個表使用的存儲空間對 sysindexes 表作出任何必要的糾正。例如會出現這樣一些情況:當除去索引后,表的 sysindexes 信息可能不是當前的。該進程在大表或數據庫上可能要花一些時間運行。只有當懷疑所返回的值不正確,而且該進程對數據庫中的其它用戶或進程沒有負面影響時,才應使用該進程。如果首選該進程,則可以單獨運行 dbcc updateusage。
權限
執行權限默認授予 public 角色。
示例
a. 有關表的空間信息
下例報告為 titles 表分配(保留)的空間量、數據使用的空間量、索引使用的空間量以及由數據庫對象保留的未用空間量。
use pubs
exec sp_spaceused 'titles'
b. 有關整個數據庫的已更新空間信息
下例概括當前數據庫使用的空間并使用可選參數 @updateusage。
use pubs
sp_spaceused @updateusage = 'true'