查詢數據庫空間使用情況


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

@objname='objname'

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

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

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

@updateusage='updateusage'

指示應運行 DBCC UPDATEUSAGE 以更新空間使用信息。 當未指定 objname 時,將對整個數據庫運行該語句;否則,將對 objname 運行該語句。 值可以為 true 或false updateusage 的數據類型為 varchar(5),默認值為 false

exec sp_spaceused

database_name:數據庫名稱

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

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

 

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

data:數據使用的空間總量。

index_size:索引使用的空間總量。

unused:為數據庫中的對象保留但尚未使用的空間總量。

 

EXEC sys.sp_spaceused N'userinfo'  --查詢指定的表名的空間使用情況

 

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

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

如果為具有空間索引的數據庫或對象計算空間使用情況,則空間大小列(例如,database_size、 reserved 和 index_size)將包含空間索引的大小。

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

簡單查詢表記錄數從大到小排序

select max(object_name(object_id)) as tablename, sum(row_count) rows from sys.dm_db_partition_stats
where index_id<2
group by object_id
order by sum(row_count) desc

簡單查詢表數據Size從大到小排序

select max(object_name(object_id)) as tablename, (sum(in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count) *8) as size_kb from sys.dm_db_partition_stats
where index_id<2
group by object_id
order by sum(in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count)desc

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM