欢迎来到天天文库
浏览记录
ID:9492415
大小:55.50 KB
页数:7页
时间:2018-05-01
《ms sql入门基础-事务复制--》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、MSSQL入门基础:事务复制>> 16.4.1事务复制的特点 前面我们指出复制的本质就是从源数据库向目标数据库复制数据,但对不同的复制类型而言总是有差别的。从复制的具体内容来看快照复制是真正意义上的数据复制,不管采用何种数据接收方式(如将表删除后再重建或删除表中数据但保留表结构),在网络中传送的是数据。而事务复制在网络中传送的是事务(由一条或多条INSERT、DELETE、UPDATE);从传输的数据量来看,事务复制仅将发生的变化传送给订购者,是一种增量复制,但快照复制却将整个出版物复制给订购者。 由于事务复制要不断地监视源数据库的数据变化,所以与快照复制相
2、比,其服务器负载相应要重。 在事务复制中当出版数据库发生变化时,这种变化就会被立即传递给订购者,并在较短时间内完成(几秒或更短),而不是像快照复制那样要经过很长一段时间间隔。因此,事务复制是一种几近实时地从源数据库向目标数据库分发数据的方法。由于事务复制的频率较高,所以必须保证在订购者与出版者之间要在可靠的网络连接。 事务复制只允许出版者对复制数据进行修改(若设置了立即更新订购者选项,则允许订购者修改复制数据),而不像合并复制那样,所有的节点(出版者和订购者)都被允许修改复制数据,因此事务复制保证了事务的一致性。它所实现的事务一致性介于立即事务一致性和潜在事务
3、一致性之间。 由于事务复制在极小的时延内把数据分发到订购者,因此要求出版者与订购者总是保持连接。但在快照复制中,由于相邻两次复制数据的传递间隔时间较长,则允许订购者与出版者不必保持永久连接。 事务复制另外一个独有特点是支持并行的快照处理,这也是SQLServer2000事务复制的新特征。正如在快照复制一节中所叙述的那样,通常而言,在创建初始快照文件的整个处理过程中,都要在出版表上放置一个共享锁来阻止对出版的更。新但事务复制所支持的并行快照处理却允许在创建快照文件的整个过程中不必将共享锁保持到快照文件创建结束之时。其具体过程是:在复制开始时,快照代理在出版表上放
4、置共享锁。当表示快照开始的事件被写入事务日志时,该共享锁即被释放。这样在随后的时间,即使快照文件仍处于生成过程中,仍可以对出版表进行修改。由此可见,共享锁在出版表时持续的时间很短。释放共享锁的时刻正是快照代理开始创建快照文件的时刻。在结束快照文件创建时。表明创建结束的事件被记录到事务日志中。在从开始到结束的整个快照生成过程中所发生的影响出版表的事务将被日志阅读代理发送到分发数据库。 并行快照处理虽然允许在创建快照文件的过程中对出版表进行修改,但也因此而增加了快照处理的负载,降低了复制处理的性能,所以应在系统活动较少时,进行快照初始化处理。 16.4.2事务复制
5、的执行步骤 事务复制的执行主要需要三个代理:快照代理、日志阅读代理、分发代理。 1快照代理 快照代理从出版者获取新的变化之前,必须使订购数据库的表与出版数据库表具有相同的表结构和数据。因此快照代理首先要实现同步集合的初始化。SQLServer只有在确认订购者包含表描述与数据的快照文件后,才能进行事务复制。 2日志阅读代理 从出版者事务日志中搜索出带有复制标志的事务,并将这些事务插入分发数据库。 3分发代理 分发代理将日志阅读代理插入到分发数据库中的事务分发到订购者。 在事务复制中快照代理和分发代理的具体步骤与快照复制基本相同。事务复制中各代理按照以
6、下的执行顺序来协调工作完成事务复制(见图16-53)。 (1)当创建订购时或到了创建出版物时,所规划的时间快照代理就会被执行,快照代理在论文上放置共享锁之后,便创建包含数据文件与描述文件的同步集合。描述文件主要是为了在订购数据库内创建与论文表相同的表结构。然后将:这两个文件存储在分发者的复制目录下,并在分发数据库中记录同步作业。 (2)日志阅读代理可以连续不断地运行或在出版物创建时规划的时刻运行来监视数据变化。日志阅读代理执行时,它首先阅读出版物的事务日志,搜索出带有复制标志的INSERT、UPDATE、DELETE语句和其它修改事务。接着,日志阅读代理将
7、这些带有复制标志的事务批拷贝至分发者的分发数据库中。日志阅读代理使用系统过程sp_replcmds从日志中来获取下一批带有复制标志的命令。只有那些被提交的事务才送至分发数据库。 在分发数据库中的复制事务和出版者事务日志中有复制标志的事务是一一相对的。在Msrepl_transactions表中存储的一个事务可由多个命令组成,每一条命令存储在Msrepl_mands表中。在整个批事务成功写入分发数据库后,每一命令将被提交接着阅读代理调用sp_repldone系统过程来标明复制事务最终在哪里完成。最后代理标明在事务日志中的哪一行将被截掉。那些仍旧等待复制的行不会被截
8、掉。从出版
此文档下载收益归作者所有