Sql-Server
縮小舊分區
我有一個大的分區時間序列表,每個分區都儲存在它自己的文件中。由於它是按週劃分的基於時間序列的分區,並且我只儲存新數據,因此我一次主動寫入的分區不超過 2 個。我在索引上將 FILLFACTOR 設置為 75,因為數據的出現有些隨機。
舊的數據分區佔用了相當多的空間,僅使用了大約 60-70% 的空間。是否可以自動更改所述分區上的 FILLFACTOR,重建索引並縮小文件?因為我不再寫這些分區了,所以它們不應該重新變大。
是的,這是可能的。這是如何
- 創建表的副本(您可以使用分區管理工具:https ://sqlpartitionmgmt.codeplex.com/ )
- 將要“壓縮”的分區切換到副本中
- 使用 FF = 100 重建副本上的索引。
- 將分區切換回原始表
使用 SQL 代理作業自動執行此操作應該很簡單。
步驟 3 最好按以下順序完成:
- 刪除所有二級索引
- 用 FF = 100 重建集群索引
- 使用 FF=100 再次創建所有二級索引
此外,如果您有 SQL Server Enterprise Edition,則可以使用
PAGE
壓縮來壓縮數據。這將需要一個不同的過程:
- 如上所述創建該表的副本
- 將要壓縮的數據切換到副本中
- 如上所述通過重建索引來壓縮數據
ALTER
用於在現在為空的分區(您切換的分區)上啟用頁面壓縮的原始表SWITCH
壓縮後的數據回到原始表中。使用 SQL Server 2014 企業版,您可以直接在要壓縮的分區上執行上述操作作為線上操作。但是,首先刪除副本中的二級索引仍然是一個好主意,因為它通常會為您提供更好的磁碟數據佈局。