Sql-Server
減小 .mdf 文件大小
我的伺服器中有一個驅動器,
:d
我儲存了*.mdf*文件,現在我突然注意到驅動器:d
沒有剩餘空間。當我檢查數據庫的*.mdf*文件時
demo1
,它是1.6TB 並且佔據了整個驅動器:d
。那是一個重要的數據庫,我不能截斷那裡的表。我檢查了數據庫屬性並註意到創建數據庫的人將*.mdf的初始大小設置為 1.6TB。*
我現在如何減小*.mdf*文件的大小?我嘗試縮小,但沒有幫助。
任何想法都是有幫助的。
順便說一句,我可以想到填充您的 MDF 的四件事:
- 數據; 表中的記錄。如果您可以歸檔和刪除不需要的記錄,則可以釋放空間。
- 指數。您可以查詢
sys.dm_db_index_usage_stats
有關哪些索引很少使用的資訊,並考慮刪除一些。看起來可以安全刪除的索引可能會成為重要的長時間執行查詢的一部分,因此理想情況下,您應該在沒有索引的情況下測試您的數據庫和典型工作負載,然後再對生產進行更改。- 碎片化(實際上是#1 和#2 的擴展)。嚴重碎片化的表和索引可能會佔用幾倍的空間,這會損害性能並消耗磁碟。
- 可用空間。您刪除的任何記錄或索引都不會立即釋放到文件系統,它們只是可供其他表和索引使用。這是一件好事,把它放在那裡!在特定情況下,回收該空間(使用 )可能是有意義的
DBCC SHRINKFILE
,但通常僅當您進行了重大的結構更改並且您不希望再次需要該空間時。如果您無法刪除數據,也無法添加磁碟,那麼短期內您可以通過刪除索引以及對錶和索引進行碎片整理來爭取時間。作為 DBA,這兩者都應該是您定期維護的一部分。審查索引需要人類的智慧,但碎片整理可以很容易地自動化。
LDF 是另一回事,當您有長時間執行的事務和/或備份太少時,它往往會膨脹。如果這也是一個問題,您可以在 DBA.SE 上閱讀幾個問題和答案。