Sql-Server
SQL-Server:sp_spaceused 提供零行但清理表的大數據大小
在清理我的表
DELETE FROM MyTable
(並執行DBCC shrinkdatabase('MyDB')
應該重要的)後,我執行語句EXEC sp_spaceused MyTable
。結果讓我感到困惑:tableName numberOfRows reservedSize dataSize indexSize unusedSize --------- ------------ ------------ -------- --------- ---------- MyTable 0 21664 KB 20672 KB 736 KB 256 KB
如您所見,有零行,但有將近 21 MB 的數據。我的問題是:這種情況的可能原因是什麼和/或我該如何進一步調查?
DELETE 不回收空間,它刪除行。
空間可以保持分配有幾個原因,其中 3 個是:
- 幽靈清理仍在執行
- 該表沒有聚集索引
- 系統表尚未更新
嘗試
EXEC sp_spaceused 'MyTable', 'true'
強制空間使用更新TRUNCATE TABLE
釋放空間,而不是刪除行DELETE myTABLE WITH (TABLOCKX)
如果沒有聚集索引並且不能使用 TRUNCATE不要執行
DBCC shrinkdatabase
,因為它沒有增加任何價值,它只會再次增長