|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
提供用于管理、检查、优化数据库操作的管理工具。
兼并复制的概述
大概读者对上面的实践例子其实不生疏,在某一年夜型企业的分销体系中,发卖司理或一些发卖主干职员常常要外出处置营业,将签定的条约经由过程手边的条记本电脑传送到总部发卖信息数据库。在这一例子中有两个次要的特;征任何发卖司理和发卖主干都能够修正发卖信息数据库;只要在举行数据传送时才将源数据库与方针数据库相连。在SQLServer中,兼并复制为这一情形供应了较好的办理计划。
兼并复制造为一种从出书者向订购者分发数据办法同意出书者和订购者对出书数据举行修正,而不论订购者与出书者是互相毗连或断开,然后当一切(或部分)节点相连时便兼并产生在各个节点的变更。在兼并复制中,每一个节点都自力完成属于本人的义务,不像事件复制和快照复制那样订购者与出书者之间要互相毗连,完整不用毗连到别的节点,也不用利用MSDTC来完成两阶段提交就能够在多个节点对出书举行修正,只是在某一时候才将该节点与别的节点相连(此时所指的别的节点其实不必定指一切别的节点),然后将所产生的数据变更复制到这些相连节点的数据库中。假如在复制时因更新统一数据而产生抵触,则数据的终极了局其实不老是出书者修正后的了局,也纷歧定包括在某一节点上所做的一切修正。由于各节点都有自立权,都能够对出书物(复制数据)举行修正,如许在依照所设定的抵触办理划定规矩对抵触处置以后,数据库终极的了局常常是包括了多个节点的修正。
能够看出只管最初一切的数据库都有不异的了局集,但这个了局是在多个节点配合介入下构成的,是多个修正兼并到方针数据库的了局。因而兼并复制其实不保护事件的分歧。
与创立快照复制和事件复制出书物比拟,当创立一个兼并出书物时,SQLServer会对数据库和出书表举行以下处置(见6-54):
(1)SQLServer把出书表中的每行都加上一个标识列,如许在表的多个拷贝间能唯一标识出该行。假如基础表上已存在具有ROWGUIDCOL属性的标识列,则SQLServer将主动把其作为复制表的行标识,假如没有,则或在创立出书物过程当中这些表被激活时,或在SQLServerAgent第一次为该出书物供应服务时,SQLServer将向表中增加一个具有ROWGUIDCOL属性的rowguid。
(2)SQLServer增加一个触发器来跟踪每行或列数据的变更,并把捕获到的变更存储到几个体系表中,或在创立出书物过程当中复制表被激活时,或在SQLServerAgent第一次为出书物供应服务时,将创立这些跟踪触发器。
(3)SQLServer把用户跟踪的体系表增加到数据库,来实行抵触的检测,办理和纪录。MSmerger_contentsMSmerger_tombstone体系表用来跟踪对出书物中数据的UPDATE、DELETE、INSERTS操纵。
16.5.2兼并复制的实行步骤
兼并复制的实行必要快照代办署理和兼并代办署理。其次要步骤是:
(1)与快照复制、事件复制中快照代办署理的感化一样,兼并复制的快照代办署理在入手下手复制之前也要完成二项义务;创立快照文件(同步汇合)将存储在分发者的复制目次下;在出书数据库纪录同步功课。兼并代办署理将初始快照文件分发给订购者,从而完成订购初始化(出书数据库与订购数据库同步)。
(2)当在某一节点(订购者)对出书物中表的某一行举行修正时,触发器会触发,并将该行的天生列generationcolumn设置为零。当兼并代办署理实行时,它把一切天生列为零的分解一组或多组,但凡新的天生列值比本来的年夜,则用新值交换旧值。
(3)在举行同步处置时,兼并代办署理把一切天生列值为零的列(被修正的列)复制到一切别的订购者。
(4)在方针数据库,从节点送来的数据与已存在数据举行兼并,兼并代办署理来举行抵触检测,假如未产生抵触则吸收复制数据;假如产生抵触,兼并代办署理依据缺省或所设定的抵触办理划定规矩来办理抵触。闪回的目的是要让数据库在commit之后,还能恢复到之前的某个状态,整库或指定的表。 |
|