复制是SQLServer数据库中保持数据一致性的一种手段。根据实现策略的不同,主要有快照复制、事务复制、合并复制等三种类型。这三种复制类型,各有各的特点,分别适用于不同的场合。一般来说,在考虑采用哪种复制类型比较合适的时候,主要考虑的是性能与数据同步的时间间隔。那么在什么情形下比较适用快照复制呢?笔者就跟大家来讨论一下这个话题。
为了在恰当的时候采用快照复制,数据库管理员首先需要知道快照复制的特点。快照复制是指将数据以特定时刻的瞬时状态转发,而不坚实对数据的更新。在发生同步时,将生成完整的快照并将其发送到订阅服务器。简单的说,快照复制就是每隔一段时间发生数据同步操作。而不是发布服务器的数据一有更新就出发这个快照复制。显然这种快照复制的数据同步性稍微差一点。在订阅服务器与发布服务器之间有一段时间会存在数据不一致的情况。但是这可以在很大程度上提高订阅服务器与发布服务器的性能。这就好像汽车运输。采用快照复制的话可以将一个集装箱装满后在送货,而不是有多少送多少。掌握这个数据库复快照复制的具体特点之后,数据库管理员就可以来考虑在什么情况下,采用快照复制更加的合理。
一、数据更改比较少的系统中。
快照复制与其他复制相比最主要的缺陷就是数据库中的数据无法及时同发布服务器一致。为此如果发布服务器中的内容很少更改的话,显然此时采用快照复制是比较合理的。此时采用快照复制的话,不仅数据一致性延迟的负面效应会越来越不明显,同时可以提高发布服务器与订阅服务器的性能。如在实际工作中,经常会遇到这样的客户。如一家企业在各地都有办事处或者销售机构,就像肯德基一样,各地的产品价格基本上都是相同的,不怎么会更改。即使更改的话,各地也是统一调整。由于此时产品价格表更改的比较少,那么在企业总部的数据库服务与各地的订阅服务器之间,采用快照复制的形式就会比较合适。其实类似的情况有很多。如不少的服装企业,像李宁、耐克等等,他们不仅自己生产,而且在各地又有自己的销售办事处。在价格方面也是统一的。在这种情况下,采用快照复制往往能够提高数据库复制的性能,同时又不影响其使用。
二、在某个时段内会出现数据大量的更改。
需要补充说明的一点是,上面说到的数据不怎么发生更改,指的是数据的延续性更改。如在一年中,每天或者每个小时更改的数据都比较平均。此时采用快照复制不怎么合适。但是如果数据的更改集中在一个时段内。而其他时间中数据库的内容不会有多大的更改。此时采用快照复制是可行的。如一些决策性系统,往往在起初导入数据的时候,需要进行大量的更改。而等到数据导入完毕,在大家对数据进行分析时,则数据库中的内容基本上保持不变。在这种情况下,笔者认为只要数据的更新集中在一个固定的时段,此时采用快照复制仍然是可行的。
再如上面这个KFC或者服装企业的案例中,如果市场部门维护一个产品的价格,而且这些价格往往在一个固定的时间进行几次更新。如在换季的时候会进行一些促销。此时数据库管理员可以在数据更新完毕后立即执行复制完成的数据快照。所以,以数据更新来判断是否适合采用快照复制,标准并不是数据的更新量。像上面提到的分析决策系统,其起初的数据更新量可能比有些数据库系统几年的数据更新量都要大。笔者认为,主要是根据数据更新的频率来进行判断。如果数据更新的比较频繁,那么即使数据更新的数据不多,像那种细水长流似的更新,则不适合采用快照复制。而那些井喷似的数据更新,所有的更新都集中在一个固定的时刻,那么此时采用快照复制是比较合理的。
三、在一段时间内是否允许具有相对发布服务器已过时的数据副本?
现在不少超市也已经连锁了,如世纪联华等等。为了提高利润,增加市场的份额,这些超市纷纷推出了冲值卡,即消费者先将一定金额的人民币打入到冲值卡中。然后每次消费完成后从卡中扣费。但前些天经常有新闻报道,说一个客户的消费卡在一家联华超市挂失了。但是捡到这张卡的人仍然可以在其他的联华超市中消费。为此消费者就想不明白了,为什么挂失了的消费卡仍然可以在其他超市中消费?挂失后的损失该由谁来承担呢?其实这就使超市在不适当的时候采用了快照复制所造成的。由于采用快照复制,在各个联华超市的数据库之间数据无法在短时间内取得一致。如有些商户说挂失当日之内的损失他们不承担,这就说明他们可能是每天下班后进行一次快照复制。一般情况下这不会有问题。但是像遇到消费卡被偷了等情况,就会遇到类似的问题了。
所以,在考虑是否适合采用快照复制的时候,还需要考虑在一段时间内是否允许具有相对发布服务器来说已过时的数据副本。如果不允许的话,那么就不允许采用这个快照复制。如果允许的话,那么数据库管理员就需要评估这段时间最长是多少。如果是24个小时,那么就需要每隔24小时进行一次快照复制。但是需要注意的是,如果时间的间隔比较短,如才允许十分钟的数据延迟,那么采用快照复制就没有必要了。此时采用事务复制或则和合并复制可能更加的合适。
四、复制少量的数据。
快照复制跟其他复制类型相比,还有一个比较显著的特点,即当发生数据同步时,将生成完整的快照并将其从发布服务器传送到订阅服务器。这是一个什么概念呢?如订阅服务器中有10G的数据,而在一个快照复制的周期内,只有1M的数据发生了更改。此时发生快照复制的话,数据库系统会将10G的数据都传送到订阅服务器上。此时更改的数据只有1M,却需要在网络上传送10G的数据流量,显然会对企业的网络产生比较大的压力。由于在发布服务器上快照复制的连续开销低于事务复制的开销,一次数据库系统不会启用跟踪增量更改。但是像这种情况,如果要复制的数据量非常的大,而平时的更新又不多。此时数据库系统要生成和应用快照,就将耗用大量的资源,包括网络资源和服务器资源。所以说,当发布服务器中的数据比较多时,采用快照复制不怎么合适。因为此时网络传输反而会成为其最重大的瓶颈资源。相反若能够采取细水长流的事务复制策略,那么对于企业网络性能的影响就会小的多,甚至可以忽略不计。
所以在采用快照复制的时候,数据库管理员一定要明白,快照复制会传送整个数据库对象。从而在快照复制传输过程中会侵蚀大量的网络带宽,从而明显的降低企业网络的性能,甚至导致网络拥塞。有时候为了保障快照能够准确、迅速的传递到其他的订阅服务器,还不得不采用VPN等技术来保障传输的准确性。为此,笔者认为只有发布服务器的数据库并不是很大的情况下,才适合采用快照复制。否则的话,采用快照复制是得不偿失。
从以上的分析中,可以得到一个结论。在考虑采用快照复制是否合适时,往往不能够采用一个指标来判断。而需要考虑多个因素,如数据库的大小、数据更新的频率、允许数据延迟的时间等等因素来进行判断。最后在数据的一致性与数据库的性能之间取得一个均衡。说实话,对于大部分数据库管理员来说,要做出一个抉择,确实有困难。因为这没有固定的指标可以拿来参考。如数据库容量小于多少时该采用快照复制。任何一个数据库管理专家都不能够下这个结论。所以在掌握影响其选择的相关因素外,就要依靠数据库管理员的经验了。在遇到类似的选择题时,往往经验可以帮助管理员迅速解决问题。最后需要提醒的是,无论最终采取了什么方案,最好能够持续跟踪一段时间,看看自己的选择是否合理。
分享到:
相关推荐
将文本文件中的数据成功导入到 SQL Server 数据库需要正确地设置数据类型、避免数据类型不匹配的错误,并且需要考虑到数据的一致性、完整性和安全性。只有这样,才能确保数据的正确性和安全性,并且提高数据导入的...
综上所述,快照复制在SQL Server数据库中保持数据一致性方面发挥着重要作用,但其使用需要根据具体情况谨慎选择。通过深入理解不同的复制策略,结合具体业务场景和数据特性,可以有效地实施快照复制策略,从而在保障...
### 使用简单恢复模式对SQL Server数据库进行收缩 在SQL Server中,随着业务的增长与时间的推移,数据库文件(.mdf)和日志文件(.ldf)可能会变得非常庞大,即使数据库中的实际数据量并没有那么大。在这种情况下,...
* 数据库巡检的重要性在于确保数据库的安全性和稳定性,避免数据库崩溃或遭受攻击,确保数据的完整性和一致性。 五、数据库巡检的频率 * 数据库巡检的频率取决于数据库的使用频率和重要性,一般来说,对于关键业务...
Sql Server 实用操作 - 数据库一致性检测工具 (DBCC) DBCC (Database Consistency Checker) 是一种强大的数据库一致性检测工具,旨在帮助开发者和数据库管理员检测和解决数据库中的问题。.Sql Server 中的 DBCC ...
日志备份则用于记录事务日志,以便在恢复时能够保持事务一致性。 在C#和ASP.NET中,我们可以使用SQL Server的Management Objects (SMO) 库来与SQL Server进行交互,执行备份操作。SMO是SQL Server提供的一组.NET类...
在开发过程中,尤其是在使用ASP.NET与SQL Server进行数据交互时,可能会遇到中文字符在数据库中显示为乱码的问题。本文将详细探讨这个问题的原因,并提供有效的解决方案。 ### 问题概述 当我们在ASP.NET 2.0应用...
在Revit建筑信息模型(BIM)软件中进行二次开发,可以极大地拓展其功能,实现与外部数据源如SQL Server数据库的高效交互。本教程重点探讨如何利用Revit API与SQL Server数据库进行数据交换,从而提升工程项目的管理和...
8. **数据一致性检查**:导入后,对比Excel源数据和数据库中数据的一致性,确认所有数据都正确导入。 9. **权限管理**:确保只有授权用户能执行数据导入,遵循最小权限原则,防止数据安全风险。 10. **备份与恢复*...
9. **数据库设计原则**:遵循数据库设计的范式,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF),以减少数据冗余和提高数据一致性。 在项目"LibraryManager"中,很可能实现了图书管理的数据库操作,如添加...
在.NET开发环境中,C#与SQL Server数据库的交互是常见的任务。这个压缩包"**C# SQL Server数据库操作DLL**"提供了一种便捷的方式,通过一个动态链接库(DLL)来处理这些操作,免去了手动编写大量基础数据库访问代码...
SQL Server数据库文档生成器是一款专为SQL Server 2000和SQL Server 2005,以及Access数据库设计的工具,它能够帮助数据库管理员和开发者高效地创建数据表的详细文档。这款软件的主要功能是根据数据库中的数据表及其...
SqlServer 数据库同步是指将多个数据库服务器中的数据保持同步,以确保数据的一致性和可靠性。在多个数据库服务器中,每个服务器都可能具有不同的数据版本,而同步可以确保所有服务器中的数据保持最新和一致。 一、...
然而,需要精心规划备份序列和恢复策略,以确保数据一致性。 另一种另类方案是利用SQL Server的“备份到设备”功能,将备份直接写入网络存储或者云存储。这有助于减轻本地存储压力,并实现远程备份,提高灾难恢复...
SQLSERVER数据库对比工具是一款专为SQL Server设计的强大实用...综上所述,SQLSERVER数据库对比工具是数据库管理员和开发者的得力助手,通过它,可以有效地管理数据库的变更,确保数据的一致性,提高开发和维护的效率。
在SQL Server数据库管理中,确保数据库表结构的一致性至关重要。尤其是在多环境、多版本之间进行同步时,表结构的差异可能导致应用程序出现问题或者数据丢失。为了应对这一挑战,专业的“SQL Server数据库表结构对比...
数据库设计是IT领域中的核心部分,特别是在关系型数据库如SQL Server中,良好的设计能确保系统的高效性和数据的一致性。以下是对"sqlserver 数据库设计模板"的详细说明: 1. **引言** - **编写目的**:设计模板...
数据库是存储数据的仓库,它可以是有组织的数据集合,被多个用户共享,并且通常具备数据的一致性和完整性约束。数据库中的数据模型决定数据的存储结构和访问方法。数据库的组织形式包括结构化数据、半结构化数据和非...
这份文档探讨了如何在SQL Server数据库与国产数据库之间进行数据移植。在数据处理和数据库迁移领域,这是一个重要话题。文档中涉及到SQL Server、Kingbase ES、Openbase等不同类型的数据库系统,并专注于它们之间的...
6. 数据一致性与兼容性: - 数据库结构和数据类型的转换可能导致不一致,如主键设置、索引、触发器等。迁移后,需要检查并调整MySQL数据库的结构以匹配原SQL Server数据库。 - 编码一致性是关键,确保源数据库和...