Sql-Server
索引重建離線操作所需的可用磁碟空間
我有兩個數據庫的 SQL Server 2017 標準版。
Database1 的目前總索引大小為 111 GB,Database2 的總索引大小為 122 GB。
由於我使用的是標準版,因此我只能離線重建索引。我們已經拆分了磁碟 D: 上的數據庫文件和 E: 上的日誌文件。D: 上的可用磁碟空間為 290 GB,E 上的可用磁碟空間為 35 GB。
如何計算 D: 和 E: 上的離線索引重建所需的可用磁碟空間?
對於線上索引重建,我發現一篇 Microsoft 文章指出所需的總空間大約是總索引大小的 1.2 倍。離線重建的估計是否相同?數據庫文件和日誌文件是否需要這個可用磁碟空間?
離線索引重建操作創建原始索引的副本,然後刪除原始索引,並用副本替換它。
但是,您應該意識到這是每個索引,而不是每個數據庫。典型的索引重建解決方案將以串列方式一次一個地重建索引;因此,您只需要數據驅動器上的可用空間等於最大索引大小的兩倍。
由於索引重建是一個記錄操作,日誌驅動器應該為至少要重建的最大索引的副本以及可能發生的任何其他並發操作留出足夠的空間。您可能會考慮使用
SORT_IN_TEMPDB = ON
for 索引重建操作,因為這允許在 tempdb 中進行大部分索引重建操作 - 如果 tempdb 位於可能會減少目標數據庫日誌驅動器上的磁碟空間需求的不同驅動器上。Microsoft Docs對索引操作的事務日誌要求有一些很好的建議。
如果您定期執行索引重建,數據庫和日誌文件應該已經有足夠的未分配空間來執行重建操作,而不需要這些文件在磁碟上增長。當然,這是假設您在每次重建後不收縮數據庫和日誌文件。