SQL Server数据库技术(109)

2016-01-29 16:53 6 1 收藏

SQL Server数据库技术(109),SQL Server数据库技术(109)

【 tulaoshi.com - SQLServer 】

16.4.1 事务复制的特点
    前面我们指出复制的本质就是从源数据库向目标数据库复制数据,但对不同的复制类型而言总是有差别的。从复制的具体内容来看快照复制是真正意义上的数据复制,不管采用何种数据接收方式(如将表删除后再重建或删除表中数据但保留表结构),在网络中传送的是数据。而事务复制在网络中传送的是事务(由一条或多条INSERT、 DELETE、 UPDATE);从传输的数据量来看,事务复制仅将发生的变化传送给订购者,是一种增量复制,但快照复制却将整个出版物复制给订购者。
    由于事务复制要不断地监视源数据库的数据变化,所以与快照复制相比,其服务器负载相应要重。
    在事务复制中当出版数据库发生变化时,这种变化就会被立即传递给订购者,并在较短时间内完成(几秒或更短),而不是像快照复制那样要经过很长一段时间间隔。因此,事务复制是一种几近实时地从源数据库向目标数据库分发数据的方法。由于事务复制的频率较高,所以必须保证在订购者与出版者之间要在可靠的网络连接。
    事务复制只允许出版者对复制数据进行修改(若设置了立即更新订购者选项,则允许订购者修改复制数据),而不像合并复制那样,所有的节点(出版者和订购者)都被允许修改复制数据,因此事务复制保证了事务的一致性。它所实现的事务一致性介于立即事务一致性和潜在事务一致性之间。
    由于事务复制在极小的时延内把数据分发到订购者,因此要求出版者与订购者总是保持连接。但在快照复制中,由于相邻两次复制数据的传递间隔时间较长,则允许订购者与出版者不必保持永久连接。
    事务复制另外一个独有特点是支持并行的快照处理,这也是SQL Server 2000 事务复制的新特征。正如在快照复制一节中所叙述的那样,通常而言,在创建初始快照文件的整个处理过程中,都要在出版表上放置一个共享锁来阻止对出版的更。新但事务复制所支持的并行快照处理却允许在创建快照文件的整个过程中不必将共享锁保持到快照文件创建结束之时。其具体过程是:在复制开始时,快照代理在出版表上放置共享锁。当表示快照开始的事件被写入事务日志时,该共享锁即被释放。这样在随后的时间,即使快照文件仍处于生成过程中,仍可以对出版表进行修改。由此可见,共享锁在出版表时持续的时间很短。释放共享锁的时刻正是快照代理开始创建快照文件的时刻。在结束快照文件创建时。表明创建结束的事件被记录到事务日志中。在从开始到结束的整个快照生成过程中所发生的影响出版表的事务将被日志阅读代理发送到分发数据库。
    并行快照处理虽然允许在创建快照文件的过程中对出版表进行修改,但也因此而增加了快照处理的负载,降低了复制处理的性能,所以应在系统活动较少时,进行快照初始化处理。

16.4.2 事务复制的执行步骤
事务复制的执行主要需要三个代理:快照代理、日志阅读代理、分发代理。

1 快照代理
    快照代理从出版者获取新的变化之前,必须使订购数据库的表与出版数据库表具有相同的表结构和数据。因此快照代理首先要实现同步集合的初始化。SQL Server 只有在确认订购者包含表描述与数据的快照文件后,才能进行事务复制。

2 日志阅读代理
从出版者事务日志中搜索出带有复制标志的事务,并将这些事务插入分发数据库。

3 分发代理
分发代理将日志阅读代理插入到分发数据库中的事务分发到订购者。
在事务复制中快照代理和分发代理的具体步骤与快照复制基本相同。事务复制中各代理按照以下的执行顺序来协调工作完成事务复制(见图16-53)。

(1) 当创建订购时或到了创建出版物时,所规划的时间快照代理就会被执行,快照代理在论文上放置共享锁之后,便创建包含数据文件与描述文件的同步集合。描述文件主要是为了在订购数据库内创建与论文表相同的表结构。然后将:这两个文件存储在分发者的复制目录下,并在分发数据库中记录同步作业。

(2) 日志阅读代理可以连续不断地运行或在出版物创建时规划的时刻运行来监视数据变化。日志阅读代理执行时,它首先阅读出版物的事务日志,搜索出带有复制标志的INSERT、 UPDATE、 DELETE 语句和其它修改事务。接着,日志阅读代理将这些带有复制标志的事务批拷贝至分发者的分发数据库中。日志阅读代理使用系统过程sp_replcmds 从日志中来获取下一批带有复制标志的命令。只有那些被提交的事务才送至分发数据库。

    在分发数据库中的复制事务和出版者

来源:http://www.tulaoshi.com/n/20160129/1499728.html

延伸阅读
标签: SQLServer
在企业管理器中可以很方便地调用其它SQL Server 工具,如SQL Server Query Analyzer (查询分析器)、SQL Server Profiler (跟踪器)等,只须从“Tools (工具)”菜单中选择相应的工具即可。 SQL Server 2000 中提供了大量的向导工具,可以引导用户完成一系列的数据库与服务器管理工作。可以从“Tools (工具)”菜单中选择“Wizards” 选项,或从工...
标签: SQLServer
除了使用系统提供的数据类型外,用户还可以根据需要用自定义的数据类型来定义表的列或声明变量。 7.3.1 用Enterprise Manager 创建用户自定义数据类型 用Enterprise Manager 创建用户自定义数据类型的方法是:在Enterprise Manager 中选择要创建用户自定义类型的数据库,在数据库对象“User Defined Data Types”上单击右键,从开始菜单...
标签: SQLServer
11.3.1 UPDATE 语法 用户可以用UPDATE 语句来更新表中一列或多列数据值,其语法如下: 各参数说明如下: SET SET 子句用于指定更新的方法,即用 的值取代相应的列的值。如果省略 WHERE 子句,那么表中的所有数据均会受到影响。在FROM 子句中指定的表或列的别名不能用于SET 子句中。 column_name 指定要更新数据的列。IDENTITY 列不能...
标签: SQLServer
    在MS SQL Server 2000 中,创建一个存储过程有两种方法:一种是使用Transaction-SQL 命令Create Procedure, 另一种是使用图形化管理工具Enterprise Manager。 用Transaction- SQL 创建存储过程是一种较为快速的方法,但对于初学者,使用Enterprise Manager 更易理解,更为简单。 当创建存储过程时,需要确定存储过程...
标签: SQLServer
每一个游标必须有四个组成部分这四个关键部分必须符合下面的顺序; 1.DECLARE 游标 2.OPEN 游标 3.从一个游标中FETCH 信息 4.CLOSE 或DEALLOCATE 游标 通常我们使用DECLARE 来声明一个游标声明一个游标主要包括以下主要内容: 游标名字 数据来源(表和列) 选取条件 属性(仅读或可修改) 其语法格式如下: DECLARE cursor_name [INSENSITIVE] [...

经验教程

305

收藏

11

精华推荐

SQL Server数据库技术(94)

SQL Server数据库技术(94)

演绎_新的精彩

SQL Server数据库技术(85)

SQL Server数据库技术(85)

可靠的铁柱

SQL Server数据库技术(99)

SQL Server数据库技术(99)

姐你惹不起659

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部