SQL2008的資料更新跟蹤測試

2021-08-25 04:00:39 字數 3357 閱讀 6716

最近乙個專案中需要監測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 秒 無

20 條

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 秒 無

9311100 條

update 語句更新 100 條

0 秒

0 秒 10

311100 條

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...