最近乙個專案中需要監測sqlserver資料庫中某些表的資料更新情況,於是做了一番poc測試和簡單效能的評估.這裡使用的是 sqlserver2008的更改跟蹤.因為需求原因,沒有考慮使用進一步的變更資料捕獲.
poc過程如下:
這裡我們建立乙個測試環境,模擬資料在 insert , update 和 delete 情況下的跟蹤效果。
1 、測試指令碼的準備,下面指令碼建立乙個新的資料庫環境,並作相應的跟蹤配置後向表中新增刪除更改資料。
usemaster
go/***
1 、建立測試環境:生成乙個帶主鍵的測試表 t_trace
*/if (
db_id (
'db_trace_test' )
isnotnull )
drop
database
db_trace_test
gocreate
database
db_trace_test
gouse
db_trace_test
gocreate
table
t_trace (
idintnot
null
,name
varchar (
100 )
constraint
[pk_t_trace
]primary
keyclustered (
[id]asc ) )
go/***
2 、配置資料庫和表的更改跟蹤引數
*/alter
database
db_trace_test
setchange_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
whereid=
3update
t_trace
setname
=' 天津 '
whereid=
1 2 、跟蹤分析,測試指令碼和效果如下
/***
4 、獲取更改過的資料
*/select
chg.
sys_change_version
as序 列,id
as主鍵
,sys_change_operation
as操 作
from
changetable (
changes
dbo.
t_trace
,0 )
chgorder
bychg
.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秒
3100條
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秒
10311100條
update
語句更新
1000條
0秒 0
秒 11
311100條
update
語句更新
10000條
0秒 0秒 5
、測試評估:
在變更資料量萬級的情況下,可以很快地響應跟蹤結果並提取出所需要的資料。
SQL2008的資料更新跟蹤測試
最近乙個專案中需要監測sqlserver資料庫中某些表的資料更新情況,於是做了一番poc測試和簡單效能的評估.這裡使用的是 sqlserver2008的更改跟蹤.因為需求原因,沒有考慮使用進一步的變更資料捕獲.poc過程如下 這裡我們建立乙個測試環境,模擬資料在 insert update 和 de...
SQL2008的資料更新跟蹤測試
最近乙個專案中需要監測sqlserver資料庫中某些表的資料更新情況,於是做了一番poc測試和簡單效能的評估.這裡使用的是 sqlserver2008的更改跟蹤.因為需求原因,沒有考慮使用進一步的變更資料捕獲.poc過程如下 這裡我們建立乙個測試環境,模擬資料在 insert update 和 de...
SQL2008的資料更新跟蹤測試
最近乙個專案中需要監測sqlserver資料庫中某些表的資料更新情況,於是做了一番poc測試和簡單效能的評估.這裡使用的是 sqlserver2008的更改跟蹤.因為需求原因,沒有考慮使用進一步的變更資料捕獲.poc過程如下 這裡我們建立乙個測試環境,模擬資料在 insert update 和 de...