gdufo

           

          SQL2008的數據更新跟蹤測試 (監控數據表變化,可用于同步)

          http://blog.csdn.net/jinjazz/article/details/5495955

          最近一個項目中需要監測SQLServer數據庫中某些表的數據更新情況,于是做了一番POC測試和簡單性能的評估.這里使用的是 SQLServer2008的更改跟蹤.因為需求原因,沒有考慮使用進一步的變更數據捕獲.

           

          POC過程如下:


          這里我們建立一個測試環境,模擬數據在 Insert , Update 和 Delete 情況下的跟蹤效果。

          1 、測試腳本的準備,下面腳本建立一個新的數據庫環境,并作相應的跟蹤配置后向表中添加刪除更改數據。




          Use master

          go

          /***

          1 、建立測試環境:生成一個帶主鍵的測試表 T_Trace

          */

          if ( DB_ID ( 'db_Trace_test' ) is not null ) drop database db_Trace_test

          go

          Create DataBase db_Trace_test

          go

          use db_Trace_test

          go

          Create Table T_Trace ( id int not null , name varchar ( 100 )

          CONSTRAINT [ PK_T_Trace ] PRIMARY KEY CLUSTERED ( [ id ] ASC )

          )

          go

          /***

          2 、配置數據庫和表的更改跟蹤參數

          */

          ALTER DATABASE db_Trace_test SET

              CHANGE_TRACKING = ON (

                      AUTO_CLEANUP = ON ,            -- 打開自動清理選項

                      CHANGE_RETENTION = 1 HOURS    -- 數據保存期為時

              );



          ALTER TABLE dbo . T_Trace ENABLE CHANGE_TRACKING

          go

          /***

          3 、向表中增加修改刪除數據

          */

          insert into T_Trace values ( 1 , ' 上海 ' ),( 2 , ' 北京 ' ),( 3 , ' 廣州 ' )

          delete from T_Trace where id = 3


          update T_Trace set name = ' 天津 ' where id = 1

          2 、跟蹤分析,測試腳本和效果如下


          /***

          4 、獲取更改過的數據

          */

          SELECT

              CHG . Sys_Change_Version as 序 列 , id as 主鍵 , Sys_change_Operation as 操 作

          FROM CHANGETABLE ( CHANGES dbo . T_Trace , 0 ) CHG

          order by CHG . Sys_Change_Version

          /*

          其中,測試腳本中函數 CHANGETABLE 的第二個參數 0 代表查詢開始的事物操作序列,這三條數據分別表示兩個插入( I )和一個刪除( D )操作并且用主鍵 ID 標識出來。

          * 這里主鍵為 1 的數據標志為插入,是因為 Insert 和 Update 是在同一個跟蹤事務中查詢出來的。

          3 、調整跟蹤范圍參數,我們從序列為 2 的操作開始跟蹤,這樣可以跟蹤到測試數據的 Update 語句:

          SELECT

              CHG . Sys_Change_Version as 序列 , id as 主鍵 , Sys_change_Operation as 操作

          FROM CHANGETABLE ( CHANGES dbo . T_Trace , 2) CHG


          order by CHG . Sys_Change_Version


          這個結果則表示,主鍵為 1 的數據數據執行過更新操作 (U)


          1、硬件測試環境:


          2 、軟件測試環境:

          Windows 2008Server SQLServer2008

          3 、樣本數據:

                 /--**--/

          4 、測試結果:其中判斷和提取更新表示查詢時間,包含了返回到 SQLServer 客戶端的傳輸時間。

          序列

          源表數據

          操作

          判斷更新

          提取更新

          1

          1000

          Delete 語句刪除 1000

          0

          2

          0

          Insert 語句插入 100

          0

          0

          3

          100

          Insert 語句插入 1000

          0

          0

          4

          1100

          Insert 語句插入 10000

          0

          0

          5

          11100

          Insert 語句插入 100000

          3

          4

          6

          111100

          Insert 語句插入 100000

          6

          7

          7

          211100

          Insert 語句插入 100000

          7

          11

          8

          311100

          Delete 語句刪除 100

          0

          9

          311100

          Update 語句更新 100

          0

          0

          10

          311100

          Update 語句更新 1000

          0

          0

          11

          311100

          Update 語句更新 10000

          0

          0

          5 、測試評估:

                 在變更數據量萬級的情況下,可以很快地響應跟蹤結果并提取出所需要的數據。

          posted on 2012-05-27 22:31 gdufo 閱讀(2147) 評論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 沅陵县| 平阴县| 衡南县| 洛浦县| 常宁市| 阜平县| 岑溪市| 澄城县| 呼和浩特市| 子长县| 尖扎县| 微博| 吉木乃县| 吉林市| 屯门区| 景宁| 揭阳市| 大田县| 彰武县| 金昌市| 谷城县| 即墨市| 吐鲁番市| 绥德县| 霞浦县| 科技| 柳州市| 沿河| 兴业县| 奇台县| 铜陵市| 岑溪市| 房产| 汝城县| 高陵县| 宜兰县| 灯塔市| 海门市| 贵溪市| 廉江市| 南川市|