愤怒的大鸟 发表于 2015-1-16 22:20:13

MSSQL网页设计复制选项的计划

这章描述如何检查和处理在MySQL数据库中的数据损坏。如果你的表损坏很多,你应该尝试找出其原因!见G.1调试一个MySQL服务器。SQLServer2000供应了比之前版本更多的复制选项,个中包含当即更新订购者,列队更新,以列队更新作为热备份的当即更新,传送复制数据,过滤出书数据等。个中前三个选项暗示可在订购者处对复制数据举行修正,然后将修正以响应的体例反应到出书者那边。假如在复制中利用这些复制选项,将使复制的设置和办理更加坚苦,以是很有需要对这些复制选项有着更加明晰的熟悉和懂得。

16.6.1当即更新订购者
所谓当即更新订购者是指在复制时利用了当即更新选项。一般而言,快照复制和事件复制都是单向数据复制即数据从出书者的源数据库复制到订购者的方针数据库。可是SQLServer经由过程同意订购者来修正复制数据而加强了这类形式的功效。当即更新订购者选项同意既能够在出书者也能够在订购者处对复制数据举行修正。当即更新是指对复制数据举行修正的订购者与出书者之间坚持数据的当即更新,即当即将订购者的修正反应到出书者那边。而且供应了对别的订购者而言的潜伏事件分歧性,即订购者的修正在当即反应到出书者那边以后,同意这一修正不用即刻同步到别的订购者那边。在创立出书物时对该选项举行设置。

应当夸大的是,在对数据举行修正的订购者与出书者之间利用了两阶段提交协定,从而请求当订购者对数据的修正在出书者那边被乐成提交以后,这一修正才会在该订购者处被提交。假如提交乐成,然后出书者才会在分发代办署理实行时(假如是快照复制,则也能够是在快照被革新时),把这类修正分发到别的的订购者那边。

与完整的两阶段提交协定比拟,当即更新订购者选项下降了复制的庞大性和事件提交失利的大概性。由于完整的两阶段协定请求一切介入事件的服务器之间必需有牢靠的收集毗连,而且对数据的修正只要在一切的介入者中都被乐成提交才会失效但当设置当即更新订购者选项时,因为仅在对复制数据举行修正的订购者与出书者之间利用了二阶段提交协定,以是事件的完全性仍失掉很好的保护,而在出书者和别的订购者之间其实不利用二阶段提交协定,如许便作废了一切介入者必需坚持数据同步的庞大性。
注重:兼并复制不同意利用当即更新订购者选项。

在SQLServer2000中,若设置了当即更新订购者选项则,必要以下组件的撑持;
触发器
存储历程
Microsoft的散布式事件和谐器MSDTC
抵触检测
环路检测

1触发器
触发器位于订购者,被用来捕获在订购者上产生的事件并使用远程历程挪用将事件提交给出书者。因为利用二阶段提交协定,从而包管事件在出书者被乐成提交后才会在订购者那边提交,假如提交失利,则订购者事件将回滚,从而使订购者数据库与出书者数据库仍能坚持同步。
2存储历程
存储历程位于出书者上,假如自订购者前次吸收复制数据以来,出书者数据库产生的变更与订购者提交的事件不产生抵触,才同意在出书者提交这些来自订购者的事件。如有抵触产生,则回绝事件提交,两处的事件都将回滚。每篇论文都无为INSERT、DELETE、UPDATE事件创立的存储历程。
3Microsoft的散布式事件和谐器(MSDTC)
在触发器利用存储历程将订购者事件提交给出书者时,必要Microsoft的散布式事件和谐器(MSDTC)来办理出书者与订购者之间的两阶段提交。远程存储历程利用BEGINDISTRIBUTEDTRANSACTION来对MSDTC举行初始化操纵。
4抵触检测
出书数据库中的存储历程利用工夫戳来举行检测,以断定某列被复制到订购者以后是不是又被修正。当订购者提交当即更新事件时,它会把某行的一切列(包含工夫戳列)送回到出书者,出书者使用存储历程将该行以后(属于出书者数据库)的工夫戳值与从订购者送回的工夫戳值举行对照,假如不异,标明在复制给订购者以后没有产生修正,则吸收事件(用从订购者送回的行值来修正该行确当前值)。
5环路检测
环路检测次要是基于以下思索而被提出的,即假如订购者的当即更新事件在出书者和订购者都被乐成提交后,出书者要在今后的某一时候将该事件复制到别的订购者,可是因为提交当即更新事件的订购者已乐成提交了该事件,因而也就没有需要再将此事件从出书者那边复制给该订购者。怎样办理该成绩呢?环路检测就是用来断定一事件是不是已在某订购者服务器处被乐成提交,从而制止该事件又一次使用于订购者服务器,终极因损坏了完全性束缚(如向统一表中拔出统一行)招致复制中断。

16.6.2列队更新订购者
列队更新选项是SQLServer2000的新增功效。与当即更新订购者一样,列队更新同意快照复制或事件复制的订购者对复制数据的修正,然后将修正反应到出书者那边。但分歧的是,列队更新其实不请求订购者与出书者之间的收集毗连一向处于激活形态。
一般在创立出书物时对该复制选项举行设置,假如利用了列队更新选项,那末订购者对复制数据的修正是保留在一个行列中。当订购者与出书者之间的收集毗连恢复时,这些行列中的事件将按前后按次被使用到出书者。
因为订购者对复制数据的修正是以异步的体例反应到出书者那边的,以是,一旦统一数据被出书者或别的的订购者修正,则简单呈现复制数据的修正抵触。在创立出书物时,我们一般也要决意抵触的办理战略,从而对能够呈现的抵触供应办理计划,包管复制数据的分歧性。
假如用户常常读到数据,而且偶然修正数据,则在该情形下保举利用列队修正,如许订购者即便在离线的情形下仍能够对复制数据举行修正。

在SQLServer2000中,若设置了当即更新订购者选项,则必要以下组件的撑持:
触发器
行列
存储历程
行列浏览代办署理

1触发
触发器依靠在订购者的出书表上,当举行列队更新时,触发器用来捕获订购者上实行的事件,然后将这些事件包在动静中并传送到行列中。

2存储历程
在创立出书物时,若指定了列队更新选项,则在出书数据库中对出书表实行拔出、删除、更新的存储历程将主动天生。行列浏览代办署理将挪用存储历程在出书者上实行行列中的事件,并举行抵触检,测若有需要则发生一些增补命令,这些命令起首传给分发数据库,然后传送给订购者。除此以外,在出书者上仍要创立纪录抵触信息,并将抵触信息传送给相干订购者的存储历程,假如检测到抵触,这些存储历程将由行列浏览代办署理挪用。

3行列
行列次要用来存储包括订购者事件的动静,订购者与分发者都有一个动静行列。在收集断开的情形下,包括订购者事件的动静起首存储在订购者动静行列,然后在收集接通时被传送到分发者动静行列。行列浏览代办署理读到这些动静并将动静中的事件使用到出书者。

4行列浏览代办署理
行列浏览代办署理运转在分发者上多线程代办署理,其次要义务就是从动静行列中读失信息并将事件使用到出书者。

16.6.3转换复制数据
转换复制数据是SQLServer2000新增的功效。用可转换订购(Transformablesubscriptions)来完成复制数据的转换。可转换订购次要是使用数据转换服务(DTS)所供应的功效,如数据挪动、传送映照、过滤等,从而能够依据每一个订购者的详细请求来定制、发送复制数据。它能够在快照复制和事件复制中利用。好比,在以下情形下我们应当利用转换复制数据选项:

依据每订购者对出书数据举行列或程度支解
在SQLServer2000之前的版本中,因为分歧的订购者必要分歧的数据(这里订购者所必要的数据是指表在垂直或程度支解后的某一部分),以是必需把数据支解成分歧的数据块,从而在创立快照复制或事件复制时,也要分离为每个订购者创立分歧的出书物。这给复制的办理和设置带来极年夜的方便,由此可增添体系的包袱。可是在SQLServer2000中,可转换订购同意为统一出书物创立定制的数据支解(列或行支解),即统一出书物撑持多个订购,从而满意分歧订购者对出书数据的分歧需求。

创立数据转换,如数据范例婚配、列操纵(如两列分解一列)、字符串操纵、用户自界说函数等。
利用可转换订购在出书者与订购者之间举行基础的、复杂的数据转换和列操纵次要包含以下几个方面:

改动数据范例(除主键列外)
从头定名某列
从某列提取子字符串或向某列增加分外的字符
对某列利用函数
在创立出书物时设置该选项。完成该选项设置后,将创立一个复制DTS包,订购者将把该DTS包作为出书物的一部分。
上面我们将先容在EnterpriseManager中怎样创立可转换订购。
起首,在创立出书物时要设置TransformPublishedData选项,在创立出书物的step6(见16.3快照复制6-24),在UpdatableSubscriptions对话框中不选中任何选项,然后单击“下一步”,会翻开TransformPublishedData对话框,如6-55。所示在该对话框当选择Yes,transformthedata。然后完成出书物的创立。

其次,在EnterpriseManager创立可转换订购必要实行以下操纵:

(1)启动SQLServerEnterpriseManager,登录到指定的服务器,依次翻开Replication、Publication文件夹。从当选择设置了TransformPublishedData选项的出书物。
(2)右击该出书物,在弹出菜单当选择DefineTransformationofPublication选项,翻开WelcometoTransformPublishedData对话框,如6-56所示。(有关该导游的余下操纵请参看数据转换服务DTS一章)。

最初,依照订购出书物的步骤向订购者推出出书物。

16.6.4取代同步同伴(AlternateSynchronizationPartners)
取代同步同伴的功效利用兼并复制的订购者不但可与创立订购的出书者举行数据同步,并且也能够与别的订购者服务器举行数据同步,即便主出书者不克不及持续利用。当利用瓜代同步同伴时,必要注重以下请求:

[*]只要兼并复制才可以使用该新特性;
[*]取代同步同伴必需有订购所必要的数据和论文布局;
[*]在取代同步同伴上的出书物最好是在原始出书者上所创立的出书物的克隆;
[*]必需将出书物的属性界说为订购者可与别的出书者举行数据同步;
[*]关于定名订购,必需包管该订购者也是取代同步同伴的订购者,如许订购者才干与别的出书者举行数据同步;
[*]关于定名订购,取代同步同伴上主动增加与原始出书者上订购具有不异属性的新订购;
16.6.5过滤复制数据
过滤复制数据本色就是对出书表举行垂直、程度支解,在创立出书物时,我们必要断定利用如何的过滤战略。固然过渡复制数据与可转换订购都供应了对数据的支解功效,但二者仍存在必定的区分,次要体现在:可转换订购是依据每订购者对复制数据的需求,对统一出书物举行支解,从而创立分歧的订购,个中仅触及到一个出书物;而过滤复制数据是在创立出书物时必要断定的选项,其支解的工具是出书表。
过滤复制数据次要可以带来以下几个优点:

[*]使经由过程收集传送的数据量最小化;
[*]削减订购者所必要的存储空间;
[*]依据每个订购者详细的请求定制出书物;
[*]因为支解后的分歧的数据块复制到分歧的订购者,从而制止或削减了抵触发生的大概性。
过滤复制数据包含四种过滤范例:列过滤、行过滤、静态过滤和团结过滤。个中列和行过滤可在快照复制、事件复制和兼并复制中利用,但静态过滤和团结过滤却仅能在兼并复制中利用。

1行过滤(RowFilter)
利用行过滤就是把某些特定的行发送给订购者,扫除那些用户不用(或不该)看到的数据行,从而能为分歧的订购者创立分歧的出书物。同时,因为分歧的订购者订购是来自统一表的分歧数据行,因而有助于制止因多个订购者修正统一数据而招致的修正抵触。
行过滤可在兼并复制、快照复制和事件复制中利用,可是,在事件复制中因为针对版表的每数据操纵语句(INSERT、DELETE、UPDATA)都要利用过滤前提语句来举行考证,以断定是不是打上“复制”标记,以是,利用行过滤会极年夜地增添体系负载。

2列过滤(ColumnFilter)
列过滤本色就是对表举行垂直支解。利用列过滤可以削减订购者必要的存储空间,削减向订购者传送数据修正的工夫。可是有些列不克不及从出书物中过滤进来,它们是:有主键束缚的列;
没出缺省值的非空列;
包括在唯一索引中的列;
兼并复制和当即更新订购者的快照复制或事件复制中的ROWGUID列。

3静态过滤(DynamicFilter)
静态过滤是指在兼并复制的处置过程当中,依据从订购者那边失掉的数据值对出书表举行数据过滤。在兼并复制中利用静态过滤能带来以下优点:
出书者上几近不用存储出书物从而削减因办理多个出书物而带来的体系负载;
在静态过滤中利用用户自界说的函数,如许依据订购者的属性来举行数据过滤,从而使订购者仅取得需要的信息。

4团结过滤(JointFilter)
团结过滤同意在兼并处置过程当中界说两个出书表中的干系。它常与行过滤一同利用,并在兼并处置中坚持团结出书表之间的参照完全性。假如某一利用笔过滤的出书表被别的的出书表的外键所援用,那末,外键表的论文必需要有一个团结过滤器来代表其对主键表的依附干系。
团结过滤其实不仅限于主键/外键干系,现实上也能够针对任何两个分歧的出书表的数据间的对照干系设置团结过滤InnoDB数据表的索引,与InnoDB数据表相比,在InnoDB数据表上,索引对InnoDB数据表的重要性要大得多。在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。

不帅 发表于 2015-1-19 09:00:42

总感觉自己还是不会SQL

小妖女 发表于 2015-1-28 05:58:03

对于微软系列的东西除了一遍遍尝试还真没有太好的办法

蒙在股里 发表于 2015-2-5 18:19:47

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。

再现理想 发表于 2015-2-13 05:49:48

大侠们有推荐的书籍和学习方法写下吧。

若相依 发表于 2015-3-3 16:25:19

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

飘飘悠悠 发表于 2015-3-11 12:21:58

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。

深爱那片海 发表于 2015-3-18 16:48:53

多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

愤怒的大鸟 发表于 2015-3-26 12:58:22

分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
页: [1]
查看完整版本: MSSQL网页设计复制选项的计划