`
buliedian
  • 浏览: 1234824 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SQL2008的数据更新跟踪测试

阅读更多

最近一个项目中需要监测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、硬件测试环境:


<!-- [if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="图片_x0020_11" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:415.5pt;height:65.25pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" o:title=""/> </v:shape><![endif]--><!-- [if !vml]--><!-- [endif]-->

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

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

相关推荐

    sqlmon sql跟踪

    2. **问题定位**:在开发和测试阶段,SQL跟踪可协助开发者快速定位代码中的SQL错误和异常行为。 3. **优化策略**:根据跟踪结果,可以调整SQL语句,如优化查询条件、创建合适索引,甚至重构数据库架构。 4. **安全...

    SQLTracker(sql跟踪器).zip

    - **数据库调优**:在应用上线前或升级后,使用SQLTracker进行压力测试,找出可能的性能问题并优化。 - **日常监控**:作为日常运维工具,持续监控数据库健康状态,预防潜在问题。 - **性能基准对比**:在不同的...

    SQL 2000 数据库绿色版,事件探查器,跟踪器,查询分析器,绿色

    描述中提到"支持SQL2008查询分析器与事件跟踪",意味着这个绿色版可能兼容SQL Server 2008的部分功能,尽管它本身是基于SQL 2000的。 在压缩包文件"SQL2K绿色版"中,可能包含了一系列与SQL 2000相关的文件,如...

    SQLServer2008Client

    SQL Server 2008是微软公司推出的一款强大的关系型数据库管理系统(RDBMS),在企业级数据存储、管理和分析方面有着广泛的应用。作为其客户端组件,SQL Server 2008 Client提供了多种工具和技术,使用户能够与SQL ...

    SQL Server测试题3份

    1. **T-SQL基础**:T-SQL(Transact-SQL)是SQL Server中的扩展SQL语言,用于数据查询、更新和管理。测试可能包括SELECT语句的使用,如JOINs、子查询、聚合函数(COUNT、SUM、AVG等)以及WHERE和HAVING子句。 2. **...

    微软正式发布SQL Server 2008

    性能上,SQL Server 2008展现了强大的实力,已经在多项基准测试中打破记录,证明了其在处理高并发事务和大数据量时的优秀表现。例如,它在TPC和OLTP测试中创造了13项新纪录,并且在ETL性能上也有卓越表现,能够在短...

    2008sql客户端64

    SQL Server 2008是微软推出的一款关系型数据库管理系统,专为各种规模的企业设计,提供了数据存储、处理和分析的强大功能。对于64位操作系统,SQL Server 2008提供了专门的64位客户端工具,以充分利用64位系统的优势...

    mysql三百万测试数据.zip

    3. **查询优化**: 利用测试数据,可以分析SQL语句的执行计划,找出慢查询并进行优化。比如,避免全表扫描,使用JOIN操作的正确性,以及是否合理使用子查询等。 4. **存储引擎比较**: MySQL支持多种存储引擎,如...

    多台SQL2005服务器同步更新数据的方法

    ### 多台SQL Server 2005服务器同步更新数据的方法 #### 一、SQL Server 2005数据同步概述 在企业级应用中,经常会出现需要在多台SQL Server 2005服务器之间同步数据的情况。这种需求可能源于分布式系统的设计,...

    SQL Server面试公司常用测试题_2

    - **T-SQL(Transact-SQL)**:SQL Server使用的扩展SQL语言,用于数据查询、更新、插入和删除,以及数据库对象的创建和管理。 2. **数据类型** - **数值类型**:如INT、BIGINT、DECIMAL、FLOAT等,理解它们的...

    SQLServer数据库部署工具,自动生成数据添加,更新脚本

    本文将深入探讨“SQLServer数据库部署工具”,该工具能自动生成数据添加、更新脚本,极大地方便了数据库的维护工作。 首先,我们来了解什么是数据库部署。数据库部署通常涉及创建数据库结构、设置权限、初始化数据...

    封装VC访问SQL(文件中包括访问SQL的dll和测试程序)

    通过VC++访问SQL,开发者可以编写SQL语句来创建、更新、删除和查询数据库中的记录。ODBC是面向所有数据库的一种统一接口,而ADO则是微软提供的更高层次的接口,它使得编程更加简单,同时提供了事务处理、错误处理等...

    SQL SERVER 2008 DATA MINING ADD-INS FOR OFFICE 2007

    3. 更新模型:当SQL Server中的数据挖掘模型发生变化时,可以自动更新Visio图形。 4. 分析流程图:将整个数据挖掘过程可视化,帮助用户跟踪和理解分析步骤。 四、Business Intelligence (BI) 应用 SQL Server 2008 ...

    测试数据.zip

    PowerCenter支持版本控制和工作流管理,这有助于跟踪和管理不同版本的测试数据,确保每次测试的一致性和可重复性。同时,为了保护敏感信息,数据脱敏和数据屏蔽也是测试数据管理的重要部分,尤其是在合规性和隐私...

    sqlserver数据导入

    2. 在SQL Server中启动导入向导,设置数据源和目标,测试连接。 3. 映射源表到目标表,处理数据冲突。 4. 保存并调度SQL Server代理作业,实现自动导入。 这种数据迁移方法适用于需要定期同步或迁移Oracle数据到SQL...

    SQLSERVER2008订阅发布

    SQL Server 2008中的发布与订阅是实现数据库数据同步的机制,它允许一台服务器(发布服务器)将数据变更操作复制到一个或多个订阅服务器。使用此技术,组织能够实现多服务器间的数据复制,用于数据备份、高可用性、...

    Sybase SQL Anywhere 5.0备份的数据文件

    标题中的“Sybase SQL Anywhere 5.0备份的数据文件”指的是使用Sybase SQL Anywhere 5.0版本创建的数据库备份文件。SQL Anywhere是一款轻量级、高性能的数据库管理系统,尤其适合在移动和嵌入式环境中使用。在5.0这...

    毕业设计系统\餐饮管理系统完整版VS2008和SQL Server

    2. SQL Server:是Microsoft推出的企业级数据库管理系统,具有强大的数据处理能力,支持多种数据库操作,如创建、查询、更新和删除数据,以及复杂的事务处理和数据安全控制。 二、系统功能模块解析 1. 用户管理:...

    老飞飞sql2008数据库通用完整数据库

    这个“老飞飞sql2008数据库通用完整数据库”可能是一个专门为特定项目或应用设计的数据存储解决方案,用于本地环境的测试和开发。 SQL Server 2008引入了许多关键特性,使得它在当时具有高度竞争力: 1. **数据...

Global site tag (gtag.js) - Google Analytics