SQL Server 2008: Change Data Capture和Change Tracking
Posted on 2008-03-02 00:03 xingd 閱讀(2786) 評論(2) 收藏 舉報經(jīng)常會有需求記錄用戶表中由DML操作(Insert/Updae/Delete)引起的數(shù)據(jù)變化,在SQL Server 2008 以前的版本中,要實現(xiàn)這樣的功能只能通過Trigger或者數(shù)據(jù)比對(例如SCD處理),而且必須針對每個用戶表開發(fā)。SQL Server 2008中新增了兩種記錄數(shù)據(jù)變化的功能,本文就Change Data Capture(CDC)和Change Tracking的特性做簡要對比。
Change Data Capture
CDC通過對事務(wù)日志的異步讀取,記錄DML操作的發(fā)生時間、類型和實際影響的數(shù)據(jù)變化,然后將這些數(shù)據(jù)記錄到啟用CDC時自動創(chuàng)建的表中。通過cdc相關(guān)的存儲過程,可以獲取詳細(xì)的數(shù)據(jù)變化情況。由于數(shù)據(jù)變化是異步讀取的,因此對整體性能的影響不大,遠(yuǎn)小于通過Trigger實現(xiàn)的數(shù)據(jù)變化記錄。
下圖來自于SQL Server Books Online,說明了CDC可用于獲取不同時間段內(nèi)的變化。

Change Tracking
不同于Change Data Capture,Change Tracking僅記錄DML操作的發(fā)生時間、類型和影響到的字段,不包含具體的變化數(shù)值,客戶端通過傳傳遞上次同步的版本號來獲取從上次同步到現(xiàn)在的變化記錄。對于應(yīng)用數(shù)據(jù)緩存的場合,這個功能非常實用,可以每隔一定時間獲取數(shù)據(jù)表中的變化記錄,然后根據(jù)變化記錄中的主鍵來獲取更新過的數(shù)據(jù)從而刷新緩存。
Change Tracking通過對要執(zhí)行的DML語句的分析獲取變化記錄,而不是去讀取日志。DML語句提交執(zhí)行時Change Tracking便已可用,而不需要等待DML完成后事務(wù)日志寫入時才可用,因此Change Tracking的響應(yīng)比Change Data Capture要快。
Change Tracking記錄的數(shù)據(jù)比Change Data Capture少,對服務(wù)器性能的影響也小。
![]()
關(guān)于CDC具體的操作,可以參考以下文章:
在SQL Server 2008中實現(xiàn)change data capture (CDC),基于July CTP (CTP3):
Part One: http://www.rzrgm.cn/esestt/archive/2007/06/10/777934.html
Part Two: http://www.rzrgm.cn/esestt/archive/2007/06/10/778321.html
IT專家網(wǎng)的文章, SQL Server 2008新功能 捕獲數(shù)據(jù)變化,基于November CTP (CTP4):
http://database.ctocio.com.cn/tips/327/7826327.shtml
http://database.ctocio.com.cn/tips/393/7826393.shtml
http://database.ctocio.com.cn/tips/438/7826438.shtml
浙公網(wǎng)安備 33010602011771號