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 、测试评估:

在变更数据量万级的情况下,可以很快地响应跟踪结果并提取出所需要的数据。

SQL2008的数据更新跟踪测试 (监控数据表变化,可用于同步)的更多相关文章

  1. OGG实验:喂奶间隔数据表通过OGG配置同步

    我之前在<使用SQL计算宝宝每次吃奶的时间间隔(数据保障篇)>中提到数据实时同步的方案,其中有一种是数据表通过OGG进行同步,当时没有详细展开测试,只给了之前学习OGG时的配置示例.由于之 ...

  2. JAVA整合FlinkCDC 监控数据库表变化

    版本至少jdk8 maven <!-- https://mvnrepository.com/artifact/com.alibaba.ververica/flink-connector-mysq ...

  3. angular指令,异步调用数据,监控数据的变化(自定义一个表头的指令)

    angular框架中提供了很多有效的指令,指令的目的就是为了提高代码的复用率,提高工作效率. 下面我们自己来定义一个指令: 一点建议:写指令名字的时候,尽量不要用用大写,下划线等,否则会有很大的坑等着 ...

  4. [rsync+inotify]——监控客户端文件变化,rsync同步到服务器

    关于rsync的配置请参考博文:http://www.cnblogs.com/snsdzjlz320/p/5630695.html 实验环境 (1) Rsync服务器:10.0.10.158 (2) ...

  5. sentinel控制台监控数据持久化【MySQL】

    根据官方wiki文档,sentinel控制台的实时监控数据,默认仅存储 5 分钟以内的数据.如需持久化,需要定制实现相关接口. https://github.com/alibaba/Sentinel/ ...

  6. 老技术记录-C#+SqlServer使用SqlDependency监听数据库表变化

    开发环境: .net / C# (.net core理论上也可以) 数据库:MS SQL Server 2005 以上 (我用的sqlserver2012) 功能:SqlDependency提供了一种 ...

  7. ABAP分享五 ALV修改单元格并将修改数据更新到数据表中示例1

    *下面的代码是在alv字段中修改字段的内容,点击保存后就可以保存数据至数据表. TABLES: spfli. DATA: wa_fieldcat TYPE lvc_s_fcat ,  " 相 ...

  8. SQL SERVER 监控数据文件增长情况

    在项目前期评估数据库的增长情况,然后根据数据库数据量的增长情况来规划存储的分配其实是一件比较麻烦的事情.因为项目没有上线,用什么来评估数据库的数据增长情况呢? 如果手头没有实际的数据,我们只能从表的数 ...

  9. python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

    python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码 ...

随机推荐

  1. ExecutorService的十个使用技巧

    ExecutorService] (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent /ExecutorService.ht ...

  2. thinkphp-2

    php的跨文件变量? global $g是一个脚本文件中, 函数外部的变量在函数中要使用时的 全局变量 $_GET等是所谓的"超全局变量", 但仍然是只能在一个脚本的范围内使用 要 ...

  3. (转)也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离)

    原文链接:http://ued.taobao.org/blog/2014/04/full-stack-development-with-nodejs/ 随着不同终端(pad/mobile/pc)的兴起 ...

  4. 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(三)

    主题:Service与Activity交互通信 问题的引出:现在有个需求,如果我们有一个下载任务,下载时间耗时比较长,并且当下载完毕后,需要更新UI的内容,这时,service中的bindServic ...

  5. [codeforces 516]A. Drazil and Factorial

    [codeforces 516]A. Drazil and Factorial 试题描述 Drazil is playing a math game with Varda. Let's define  ...

  6. Linux CPU负载

    昨天查看Nagios警报信息,发现其中一台服务器CPU负载过重,机器为CentOS系统.信息如下: 2011-2-15 (星期二) 17:50 WARNING - load average: 9.73 ...

  7. 【云计算】Docker云平台—Docker基础

    Docker云平台系列共三讲,此为第一讲:Docker基础 参考资料: Docker官方文档:https://docs.docker.com/ Docker从入门到实践:https://yeasy.g ...

  8. [MySQL] - MySQL的Grant命令

    本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删 ...

  9. maven web项目build失败

    通过maven build发布web项目到tomcat时报如下异常: [INFO] ---------------------------------------------------------- ...

  10. Sybase IQ如何将大文件数据迅速加载到数据库

    试想一下,如果一个文件5G.10G甚至更大.如何将它迅速地加载到数据库指定的表呢?我们看看Sybase IQ是如何迅速地将表的数据加载到数据库的. 数据文件格式: 1440,2011-01-09 00 ...