Sql-Server

縮小舊分區

  • May 28, 2015

我有一個大的分區時間序列表,每個分區都儲存在它自己的文件中。由於它是按週劃分的基於時間序列的分區,並且我只儲存新數據,因此我一次主動寫入的分區不超過 2 個。我在索引上將 FILLFACTOR 設置為 75,因為數據的出現有些隨機。

舊的數據分區佔用了相當多的空間,僅使用了大約 60-70% 的空間。是否可以自動更改所述分區上的 FILLFACTOR,重建索引並縮小文件?因為我不再寫這些分區了,所以它們不應該重新變大。

是的,這是可能的。這是如何

  1. 創建表的副本(您可以使用分區管理工具:https ://sqlpartitionmgmt.codeplex.com/ )
  2. 將要“壓縮”的分區切換到副本中
  3. 使用 FF = 100 重建副本上的索引。
  4. 將分區切換回原始表

使用 SQL 代理作業自動執行此操作應該很簡單。

步驟 3 最好按以下順序完成:

  • 刪除所有二級索引
  • 用 FF = 100 重建集群索引
  • 使用 FF=100 再次創建所有二級索引

此外,如果您有 SQL Server Enterprise Edition,則可以使用PAGE壓縮來壓縮數據。這將需要一個不同的過程:

  1. 如上所述創建該表的副本
  2. 將要壓縮的數據切換到副本中
  3. 如上所述通過重建索引來壓縮數據
  4. ALTER用於在現在為空的分區(您切換的分區)上啟用頁面壓縮的原始表
  5. SWITCH壓縮後的數據回到原始表中。

使用 SQL Server 2014 企業版,您可以直接在要壓縮的分區上執行上述操作作為線上操作。但是,首先刪除副本中的二級索引仍然是一個好主意,因為它通常會為您提供更好的磁碟數據佈局。

引用自:https://dba.stackexchange.com/questions/86588