首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 儲存結構:DCM 與 BCM 頁面在備份策略中的角色

     編輯:關於SqlServer

DCM 頁面:差異備份的導航圖

DCM(Differential Changed Map,差異變更對應)頁面追蹤資料庫檔案中哪些區在最近一次完整備份之後被修改過。它是差異備份能夠「只備份變更資料」的關鍵機制。

DCM 運作機制

  • 位於每個資料檔案的第 6 頁(頁碼 6),之後每 511,230 頁重複一次。
  • 每個區對應 1 個位元:1 = 已變更(CHANGED),0 = 未變更(NOT CHANGED)。
  • 完整備份完成後,SQL Server 會將對應區的 DCM 位元重設為 0。
  • 任何資料修改(INSERT/UPDATE/DELETE)會將該區的 DCM 位元設為 1。
  • 差異備份時,讀取 DCM 位元為 1 的區,僅備份這些區的資料頁。

實戰觀察:DBCC PAGE 見證 DCM 變化

建立新資料庫 TESTDB 後,執行:

DBCC PAGE(TESTDB, 1, 6, 3); -- printopt=3 顯示區層級分配狀態

初始狀態下,系統物件佔用的區會顯示 CHANGED(如區 0~23)。執行完整備份後,再次執行相同指令,會發現絕大多數區變為 NOT CHANGED,僅剩系統保留頁面維持 CHANGED(系統頁面必須每次備份)。

BCM 頁面:大量記錄模式下的變更追蹤

BCM(Bulk Changed Map,大量變更對應)頁面僅在資料庫設定為 BULK_LOGGED(大量記錄)復原模式 時發揮作用。

大量記錄模式特點

  • 大量操作(如 BULK INSERT、SELECT INTO、索引重建)採用最小記錄,不記錄每筆資料列的詳細變更。
  • 優點:大幅減少記錄檔空間、提升大量操作效能。
  • 缺點:無法還原到大量操作發生期間的任意時間點;若記錄備份包含大量操作,只能還原整個記錄備份,無法中途停止。

BCM 的角色

  • 位於第 7 頁,同樣每 511,230 頁重複。
  • 記錄自上次記錄備份以來,被大量操作修改的區(位元=1)。
  • 記錄備份時,讀取 BCM 識別需掃描的區,將該區的資料頁內容寫入記錄備份,確保大量操作的資料可被復原。
  • 若資料庫處於 FULL 復原模式,或未執行大量操作,BCM 位元全為 0。

DCM vs BCM 對照表

特性DCMBCM
追蹤目標完整備份後的所有資料修改記錄備份後的大量操作修改
服務備份類型差異備份記錄備份(大量記錄模式下)
位元=1 含義區已變更,需納入差異備份區被大量操作修改,需納入記錄備份
重設時機完整備份完成後記錄備份完成後
適用復原模式所有模式僅 BULK_LOGGED

總結

DCM 與 BCM 是 SQL Server 實現增量備份策略的核心基礎設施。DCM 讓差異備份無需掃描整個資料庫;BCM 讓大量記錄模式下的記錄備份能捕獲最小記錄操作的資料頁內容。理解兩者運作時機與重設邏輯,有助於設計高效的備份維護計畫、排查備份效能問題,並正確選擇復原模式以平衡效能與資料保護需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved