SQL Server 2000 提供了比以前版本更多的复制选项,其中包括立即更新订购者,排 队更新,以排队更新作为热备份的立即更新,传递复制数据,过滤出版数据等。其中前三 个选项表示可在订购者处对复制数据进行修改,然后将修改以相应的方式反映到出版者那 里。如果在复制中使用这些复制选项,将使复制的配置和管理更为困难,所以很有必要对 这些复制选项有着更为清晰的认识和了解。
16.6.1 立即更新订购者
所谓立即更新订购者是指在复制时使用了立即更新选项。通常而言,快照复制和事务 复制都是单向数据复制即数据从出版者的源数据库复制到订购者的目标数据库。但是SQL Server 通过允许订购者来修改复制数据而增强了这种模式的功能。立即更新订购者选项允 许既可以在出版者也可以在订购者处对复制数据进行修改。立即更新是指对复制数据进行 修改的订购者与出版者之间保持数据的立即更新,即立即将订购者的修改反映到出版者那 里。并且提供了对其它订购者而言的潜在事务一致性,即订购者的修改在立即反映到出版 者那里之后,允许这一修改不必马上同步到其它订购者那里。在创建出版物时对该选项进 行设置。
应该强调的是,在对数据进行修改的订购者与出版者之间使用了两阶段提交协议,从 而要求当订购者对数据的修改在出版者那里被成功提交之后,这一修改才会在该订购者处 被提交。如果提交成功,然后出版者才会在分发代理执行时(如果是快照复制,则也可以 是在快照被刷新时),把这种修改分发到其它的订购者那里。
与完全的两阶段提交协议相比,立即更新订购者选项降低了复制的复杂性以及事务提 交失败的可能性。因为完全的两阶段协议要求所有参与事务的服务器之间必须有可靠的网 络连接,并且对数据的修改只有在所有的参与者中都被成功提交才会生效但当设置立即 更新订购者选项时,由于仅在对复制数据进行修改的订购者与出版者之间使用了二阶段提 交协议,所以事务的完整性仍得到很好的维护,而在出版者和其它订购者之间并不使用二 阶段提交协议,这样便取消了所有参与者必须保持数据同步的复杂性。
注意:合并复制不允许使用立即更新订购者选项。
在SQL Server 2000 中,若设置了立即更新订购者选项则,需要以下组件的支持;
触发器
存储过程
Microsoft 的分布式事务协调器MS DTC
冲突检测
环路检测
1 触发器
触发器位于订购者,被用来捕捉在订购者上发生的事务并利用远程过程调用将事务提 交给出版者。由于使用二阶段提交协议,从而保证事务在出版者被成功提交后才会在订购 者那里提交,如果提交失败,则订购者事务将回滚,从而使订购者数据库与出版者数据库 仍能保持同步。
2 存储过程
存储过程位于出版者上,如果自订购者上次接收复制数据以来,出版者数据库发生的 变化与订购者提交的事务不发生冲突,才允许在出版者提交这些来自订购者的事务。若有 冲突发生,则拒绝事务提交,两处的事务都将回滚。每篇论文都有为INSERT、 DELETE、 UPDATE 事务创建的存储过程。
3 Microsoft 的分布式事务协调器(MS DTC)
在触发器使用存储过程将订购者事务提交给出版者时,需要Microsoft 的分布式事务 协调器(MS DTC) 来管理出版者与订购者之间的两阶段提交。远程存储过程使用BEGIN DISTRIBUTED TRANSACTION 来对MS DTC 进行初始化操作。
4 冲突检测
出版数据库中的存储过程使用时间戳来进行检测,以确定某列被复制到订购者之后是 否又被修改。当订购者提交立即更新事务时,它会把某行的所有列(包括时间戳列)送回 到出版者,出版者利用存储过程将该行当前(属于出版者数据库)的时间戳值与从订购者 送回的时间戳值进行比较,如果相同,表明在复制给订购者之后没有发生修改,则接收事 务(用从订购者送回的行值来修改该行的当前值)。
5 环路检测
环路检测主要是基于以下考虑而被提出的,即如果订购者的立即更新事务在出版者和 订购者都被成功提交后,出版者要在以后的某一时刻将该事务复制到其它订购者,但是由 于提交立即更新事务的订购者已成功提交了该事务,因此也就没有必要再将此事务从出版 者那里复制给该订购者。如何解决该问题呢?环路检测就是用来确定一事务是否已在某订购者服务器处被成功提交,从而避免该事务又一次应用于订购者服务器,最终因破坏了完 整性约束(如向同一表中插入同一行)导致复制中止。
16.6.2 排队更新订购者
排队更新选项是SQL Server 2000 的新增功能。与立即更新订购者一样,排队更新允 许快照复制或事务复制的订购者对复制数据的修改,然后将修改反映到出版者那里。但不 同的是,排队更新并不要求订购者与出版者之间的网络连接一直处于激活状态。
通常在创建出版物时对该复制选项进行设置,如果使用了排队更新选项,那么订购者 对复制数据的修改是保存在一个队列中。当订购者与出版者之间的网络连接恢复时,这些 队列中的事务将按先后顺序被应用到出版者。
由于订购者对复制数据的修改是以异步的方式反映到出版者那里的,所以,一旦同一 数据被出版者或其它的订购者修改,则容易出现复制数据的修改冲突。在创建出版物时, 我们通常也要决定冲突的解决策略,从而对可以出现的冲突提供解决方案,保证复制数据 的一致性。
如果用户经常读到数据,并且偶尔修改数据,则在该情况下推荐使用排队修改,这样 订购者即使在离线的情况下仍可以对复制数据进行修改。
在SQL Server 2000 中,若设置了立即更新订购者选项,则需要以下组件的支持:
触发器
队列
存储过程
队列阅读代理
1 触发
触发器依附在订购者的出版表上,当进行排队更新时,触发器用来捕捉订购者上执行 的事务,然后将这些事务包在消息中并传送到队列中。
2 存储过程
在创建出版物时,若指定了排队更新选项,则在出版数据库中对出版表执行插入、删 除、更新的存储过程将自动生成。队列阅读代理将调用存储过程在出版者上执行队列中的 事务,并进行冲突检,测如有必要则产生一些补充命令,这些命令首先传给分发数据库, 然后传送给订购者。除此之外,在出版者上仍要创建记录冲突信息,并将冲突信息传递给 相关订购者的存储过程,如果检测到冲突,这些存储过程将由队列阅读代理调用。
3 队列
队列主要用来存储包含订购者事务的消息,订购者与分发者都有一个消息队列。在网 络断开的情况下,包含订购者事务的消息首先存储在订购者消息队列,然后在网络接通时 被传送到分发者消息队列。队列阅读代理读到这些消息并将消息中的事务应用到出版者。
4 队列阅读代理
队列阅读代理运行在分发者上多线程代理,其主要任务就是从消息队列中读取信息并 将事务应用到出版者。
16.6.3 转换复制数据
转换复制数据是SQL Server 2000 新增的功能。用可转换订购(Transformable subscriptions) 来实现复制数据的转换。可转换订购主要是利用数据转换服务(DTS)所提供的 功能,如数据移动、传递映射、过滤等,从而可以根据每个订购者的具体要求来定制、发 送复制数据。它可以在快照复制和事务复制中使用。比如,在以下情况下我们应该使用转 换复制数据选项:
根据每一订购者对出版数据进行列或水平分割
在SQL Server 2000 以前的版本中,由于不同的订购者需要不同的数据(这里订购者 所需要的数据是指表在垂直或水平分割后的某一部分),所以必须把数据分割成不同的数 据块,从而在创建快照复制或事务复制时,也要分别为每一个订购者创建不同的出版物。 这给复制的管理和配置带来极大的不便,由此可增加系统的负担。但是在SQL Server 2000 中,可转换订购允许为同一出版物创建定制的数据分割(列或行分割),即同一出版物支 持多个订购,从而满足不同订购者对出版数据的不同需求。
创建数据转换,如数据类型匹配、列操作(如两列合成一列)、字符串操作、用 户自定义函数等。
使用可转换订购在出版者与订购者之间进行基本的、简单的数据转换和列操作主要包括以下几个方面:
改变数据类型(除主键列外)
重新命名某列
从某列提取子字符串或向某列添加额外的字符
对某列使用函数
在创建出版物时设置该选项。完成该选项设置后,将创建一个复制DTS 包,订购者将把该DTS 包作为出版物的一部分。
下面我们将介绍在Enterprise Manager 中如何创建可转换订购。
首先,在创建出版物时要设置Transform Published Data 选项,在创建出版物的step6

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

MySQL是一个开源的关系型数据库管理系统,适用于数据存储、管理、查询和安全。1.它支持多种操作系统,广泛应用于Web应用等领域。2.通过客户端-服务器架构和不同存储引擎,MySQL高效处理数据。3.基本用法包括创建数据库和表,插入、查询和更新数据。4.高级用法涉及复杂查询和存储过程。5.常见错误可通过EXPLAIN语句调试。6.性能优化包括合理使用索引和优化查询语句。

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

InnoDB的锁机制包括共享锁、排他锁、意向锁、记录锁、间隙锁和下一个键锁。1.共享锁允许事务读取数据而不阻止其他事务读取。2.排他锁阻止其他事务读取和修改数据。3.意向锁优化锁效率。4.记录锁锁定索引记录。5.间隙锁锁定索引记录间隙。6.下一个键锁是记录锁和间隙锁的组合,确保数据一致性。

MySQL查询性能不佳的原因主要包括没有使用索引、查询优化器选择错误的执行计划、表设计不合理、数据量过大和锁竞争。 1.没有索引导致查询缓慢,添加索引后可显着提升性能。 2.使用EXPLAIN命令可以分析查询计划,找出优化器错误。 3.重构表结构和优化JOIN条件可改善表设计问题。 4.数据量大时,采用分区和分表策略。 5.高并发环境下,优化事务和锁策略可减少锁竞争。

在数据库优化中,应根据查询需求选择索引策略:1.当查询涉及多个列且条件顺序固定时,使用复合索引;2.当查询涉及多个列但条件顺序不固定时,使用多个单列索引。复合索引适用于优化多列查询,单列索引则适合单列查询。

要优化MySQL慢查询,需使用slowquerylog和performance_schema:1.启用slowquerylog并设置阈值,记录慢查询;2.利用performance_schema分析查询执行细节,找出性能瓶颈并优化。

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver Mac版
视觉化网页开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具