SqlServerCDC技术总结

2019-01-18 18:51

使用SqlServer 2008的CDC技术研究

1.CDC简介

CDC(Change Data Capture,变更数据捕获)。主要原理为,通过对事务日志的

异步读取,记录DML操作的发生时间、类型和实际影响的数据变化,然后将这些数据记录到启用CDC时自动创建的表中。通过cdc相关的存储过程,可以获取详细的数据变化情况。由于数据变化是异步读取的,因此对整体性能的影响不大,远小于通过Trigger实现的数据变化记录。

适用环境:

仅在SQLServer2008(含)以后的企业版、开发版和评估版中可用。 常见场景:

在数据仓库或数据中心的建设过程中,通过这种技术,可以简化从业务数据库导入数据

(ETL)的复杂度,以及降低对生产系统的性能影响。

使用方法: 使用方法较为简单,(网上有很多例子),此处略过。

2.优缺点总结

优点:

1)可以对单个表进行监控,也可以对单个表的某些字段进行监控,使用较为灵活;

2)对用户修改以前的历史记录可以有效捕捉,因此可以解决没有时间戳的变更问题;

3)使用这种技术,就可以不用再使用triger这种低效高耗的技术;

4)是一种很好的向数据仓库或数据中心增量加载数据的好方法。

缺点:

1)CDC激活会显著增加日志文件的读操作。

2)CDC激活后更新跟踪表会产生额外的写入,并消耗存储空间。

3)CDC激活后,原数据表的聚簇索引尺寸会影响到CDC产生的IO数据量,而原始数据表上的非聚簇索引则不会。

4)CDC激活后,被选定进行更新跟踪的列键值属性同样会影响到CDC产生的IO数据量和存储空间。

5)如果某部分日志,CDC的进程还没有读取,那么在截断日志时就会忽略这个部分(截断日志或收缩日志都会对CDC有一定影响,需要考虑日志维护策略)

官方建议:

微软建议CDC结合快照隔离级别使用,可以避免读取变更数据与变更数据写入时的

读写阻塞。需要注意:快照隔离级别会有额外的开销,特别是Tempdb(所有的数据更改都会被版本化存到tempdb)。启用CDC之后会新增一个叫CDC的Schema和一系列的系统表、SP和View。官方建议不要直接查询系统表而是使用对应的系统SP/FN来获取CDC数据。

1)capture作业是用于扫描日志文件,把变更记录写到变更表中。调用

sp_MScdc_capture_job来实现,可以根据当前库的实际事务吞吐量来设置扫描参数和扫描间隔,使得在性能开销和跟踪需求间达到合理平衡。

2)cleanup作业是清理变更变表中的数据,默认三天的数据,确定合适的间隔是非常重

要的。

4.关键问题

理想状态下,创建CDC的同时将需要轮询的变更表(变更表,每跟踪一个表就会有一个

变更数据表;其他不需要轮询的不需关注)部署到非生产机的SQLserver(即数据仓库或数据中心的SQLSERVER)上,以减少对生产机的依赖与影响。

但是,没有资料显示,可以直接将变更表放在另外一个SQLSERVER中,结合微软的官方

建议,也不建议直接操作他的系统表,故可以考虑使用微软的数据复制功能,将变更表同步到数据仓库或数据中心中。然后,供后续数据处理使用。


SqlServerCDC技术总结.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:书法与中国文化感悟

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: