2016-02-18 38 views
1

我看到的這個問題最常見的變化是人們刪除了行和/或列,但大小並沒有減少,並且大部分迴應這個問題的答案是,你不應該試圖收縮你的數據庫,如果你能幫助它。從我讀過的內容來看,處理這個問題的最好方法是將內容插入到一個新的表中,這個表允許SQL整齊地編譯數據。SQL Server - 刪除表但未使用的空間不被回收?

我不知道如果我要告訴你的是同樣的事情,但我刪除了一些大的,未使用的從我的數據庫表應該已經釋放了一些空間,但現在看來似乎沒有做任何事情。我從14GB開始,刪除後,我仍然有14GB的大小。

這裏是什麼樣子刪除後的快照:

FileSizeMB UsedSpaceMB UnusedSpaceMB Type DBFileName 
285.06  8.94   276.13  Log  Database_DB_log 
13866.00 9160.88  4705.13  Data Database_DB 
14151.06 9169.82  4981.26    *** Total for all files *** 

該腳本可以在這裏找到:http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=61762

從這個總結,它肯定看起來像我有一些未使用的空間,這是從剛剛刪除的表中刪除,但有沒有辦法在不縮水的情況下回收它?因爲我讀過的所有不好的東西,我只是非常不舒服,因爲我從來沒有處理過SQL中的索引,我不相信我能夠正確地重新索引。

有什麼想法?

回答

1

除非您將它設置爲自動縮小,我會懷疑,那麼您需要縮小文件。

This解釋過程和優點/缺點。

收縮本質上並不壞,這取決於您的使用情況。如果你想縮小數據庫以便快速增長它,那麼我會說「爲什麼要這麼做?」,但如果它給你所需的空間,而且你不認爲它會快速增長,那麼你就是大概很好。

+0

我有一個問題,我不認爲我從鏈接中完全理解:「收縮操作不會保留數據庫中索引的碎片狀態,並且通常會將碎片增加到一定程度。反覆收縮數據庫。「如果我要縮小數據庫,但在縮小操作部分,將「重新組織文件」複選框留空 - 是否仍會導致碎片化? – Farellia

+0

我相信會的。你可能想要做的是收縮操作完成後的索引重組。這是一個在線操作(比在企業之外的任何地方重建都要好),但可能是密集型的,因此可能導致高排隊等。 – Josh

+1

在你隨機收縮你的數據庫之前,你應該閱讀這篇文章以及裏面引用的所有文章。 https://www.brentozar.com/archive/2009/08/stop-shrinking-your-database-files-seriously-now/這是關於使用自動收縮的非常好的一個。 http://serverfault.com/questions/20909/is-it-safe-to-have-sql-server-auto-shrink-turned-on –

相關問題