SQL Server儲存 6 8 理解DCM頁

2022-02-14 10:50:46 字數 2397 閱讀 1802

差異變更頁(differential change map:dcm:sql server使用差異變更頁來跟蹤自上次完全備份後修改過的區。dcm頁在資料檔案裡是第6頁。dcm頁用來跟蹤完全備份後修改過的區。dcm為每個跟蹤的區使用每一位來記錄。如果這個位是設定為1,那麼自上一次完全備份後,這個區是被修改過了。如果這個位設定為0,那麼自上一次完全備份後,這個區沒有修改過。乙個dcm頁可以儲存64000個左右區的資訊。每隔511232頁,dcm會重複乙個。乙個dcm頁可以跟蹤63904個區的變更資訊。第2個dcm頁會出現在第511238頁。

1

create

database

dcmdb2go

3backup

database dcmdb to

disk='

d:\dcmdb.bak'4

go5dbcc traceon(3604)6

dbcc page('

dcmdb

',1,6,3)

可以看到,從第0頁到第32頁的區,自上次完全備份後,有發生改變。這並不是說,這32頁每頁都有改變。我們可以確定的說,至少有4頁發生改變,乙個區乙個頁。這可能是因為完全備份命令觸發的內部表改變。

我們往表裡插入點資料,再用dbcc page命令看下dcm頁的資訊。

通過select into我們往資料庫裡建立了新錶,並往裡面插入了資料,這會觸發很多系統表的變更。結果我們看到自上次完全備份後,很多區標記為改變。一直到1:167頁,這裡的改變都是內部物件的修改。頁從1:184至1:1679的改變,是因為我們select into語句觸發的。當我們進行差異備份時,sql server讀取dcm頁,這些變更頁會在差異備份裡做上標記。例如我們剛才提到的,頁(1:0-1:24)在dcm頁標記為改變頁,實際可能只有有4個頁發生改變,但在差異備份裡,這32個頁都會備份。

我們進行乙個差異備份,並通過dbcc page看看dcm頁的資訊。

可以看到差異備份不會改變dcm頁的內容。

我們來計算下這個備份大小是否和dcm改變頁的大小一致。

((32-0) + (56-48) + (88-72)  + (136-112) +(168-144)+(1680-184)  ) * 8=12800kb ,基本接近,這裡的差距是檔案頭資訊。

我們現在進行一次完整備份,再用dbcc page看下dcm頁的資訊。

現在sql server清空了dcm頁。所有頁都被標記為未改變,除了4個分割槽1:0-1:32。這個備份將用來後續差異備份的基礎。有個選項可以設定完全備份不影響現存的備份鏈。

1

backup

database dcmdb to

disk='

d:\dcmdb2_copy.bak

'with copy_only

在這個情況下,sql server不會重設dcm頁。dcmdb2.bak檔案還是完全備份檔案,並未後續差異備份做基礎。這在一些你想完全備份又不想影響到備份鏈的時候可以用到。

小結一下:sql server通過dcm頁跟蹤分割槽改變信心。當進行差異備份時,sql server只備份dcm頁裡標記為改變的區。它幫助sql sever加速差異備份操作,通過不掃瞄所有的頁看看有沒有修改(或自上次完整備份有沒有改變)。差異備份不會清空dcm頁,它只備份從上次完全備份後發生改變的區。當進行完整備份時,sql server在dcm頁重設位狀態,標記它們為未改變。

SQL Server儲存 7 8 理解BCM頁

今天我們來討論下批量更改對映 bulk changed map bcm 頁,還有大容量日誌恢復模式 bulk logged recovery model 如何運作的。批量更改對映 bulk changed map bcm sql server使用bcm頁來跟蹤自上次完全備份後,被大容量日誌操作修改的...

sql server儲存過程

建立表的語句 create table student sno int primary key,sname nvarchar 30 sgentle nvarchar 2 sage int,sbirth smalldatetime,sdept nvarchar 30 drop table studen...

SQLSERVER儲存過程

sqlserver儲存過程使用說明書 引言首先介紹一下什麼是儲存過程 儲存過程就是將常用的或很複雜的工作,預先用 sql語句寫好並用乙個指定的名稱儲存起來,並且這樣的語句是放在資料庫中的,還可以根據條件執行不同 sql語句,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫 ex...