Sql-Server

日期時間聚集索引不斷碎片化

  • November 20, 2015

我有一個名為 CDR 的大表(400 萬條記錄),用於儲存來自 VoIP 系統中 Cisco 路由器的 CDR(呼叫詳細記錄),該表不斷增長,並且永遠不會插入亂序的記錄。我們也不會更新或刪除行。

由於我們的大多數查詢都是基於發起呼叫的時間,因此我在此列(DATETIME數據類型)上創建了我的主聚集索引。然而,在短暫的時間之後,索引變得碎片化,僅僅一周後它就有超過 70% 的碎片,所以我們需要重建它。我不明白為什麼這種情況一直發生,因為我們按順序插入,並且不更新或刪除行。

任何減少或消除碎片的建議將不勝感激。

我在裝有 Windows Server 2012 的舊 Xenon 伺服器上使用 SQL Server 2014 Enterprise 版本。

具有不斷增加的鍵的表上仍然可能發生碎片,即使該鍵本身從未受到更新。

  • 如果文件組與其他對象共享,則分配可能會交錯,從而導致碎片。
  • 增加行大小的更新可能會導致頁面拆分。
  • 刪除可能會使頁面幾乎為空並導致內部碎片。

但是,您說刪除和更新很少或不存在。因此,為了在一周內達到 70% 的碎片,我假設原因一定是縮小數據庫任務。看看為什麼你不應該收縮你的數據文件

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