卸除和重建大型物件
當您卸除或重建大型索引,或是卸除或截斷大型資料表時,SQL Server 2005 Database Engine 會延遲實際的分頁取消配置以及其相關聯的鎖定,直到交易認可為止。此實作可在多使用者環境中支援自動認可和明確交易,並且適用於使用超過 128 個範圍的大型資料表與索引。
Database Engine 會將整個程序分割為邏輯與實體兩個階段,藉以避免卸除大型物件所需的配置鎖定。
在邏輯階段中,資料表或索引所使用的現有配置單位會標示為要取消配置並進行鎖定,直到交易認可為止。資料列會透過已卸除的叢集索引,複製並移動到在存放區中新建立的配置單位,而這個存放區可能是重建的索引或是堆積。(如果是重建的索引,還會排序資料列。)發生復原時,只需要復原這個邏輯階段。
實體階段發生在交易認可之後。標示為取消配置的配置單位,會以批次方式實際進行卸除。這些卸除作業是由背景執行的短暫交易處理,不需要太多鎖定。
因為實體階段發生在交易認可之後,資料表或索引的儲存空間仍可能會顯示為無法使用的狀態。如果實體階段完成之前,資料庫擴大需要用到這個空間,Database Engine 會嘗試從標示為取消配置的配置單位復原儲存空間。若要尋找這些配置單位目前所使用的空間,請使用 sys.allocation_units 目錄檢視。
延遲的卸除作業不會立即釋放配置的空間,而且會增加 Database Engine 的負擔成本。因此,使用 128 個或少於 128 個範圍的資料表和索引都會被卸除、截斷和重建,和在 SQL Server 2000 中一樣。這表示邏輯和實體階段都是在交易認可前發生。