SQLSERVER复制的要点
SQLSERVER复制的要点
在论坛里经常有人问:SQLSERVER复制出问题了!!SQLSERVER复制不运行了!!SQLSERVER复制遇到阻塞了!!
然后最后来一句:“怎麽办???????????????”
大家知道:我们使用SQLSERVER复制功能主要用来读写分离,当然还有其他的场景会用到SQLSERVER复制,不过大部分还是用在"读写分离"
根据《SQLSERVER数据库大型应用解决方案总结》里总结的SQLSERVER复制的优缺点
文章地址:http://www.cnblogs.com/dinglang/archive/2012/01/10/2317748.html
优缺点 :
(1) 数据的实时性差:数据不是实时同步到自读服务器上的,当数据写入主服务器后,要在下次同步后才能查询到。
(2) 数据量大时同步效率差:单表数据量过大时插入和更新因索引,磁盘IO等问题,性能会变的很差。
(3) 同时连接多个(至少两个)数据库:至少要连接到两个数据数据库,实际的读写操作是在程序代码中完成的,容易引起混乱。
(4) 读具有高性能高可靠性和可伸缩:只读服务器,因为没有写操作,会大大减轻磁盘IO等性能问题,大大提高效率。
只读服务器可以采用负载均衡,主数据库发布到多个只读服务器上实现读操作的可伸缩性。
------------------------------------------------------华丽的分割线-----------------------------------------------------------
其实我们可以只同步某些表,不需要将整个数据库里的所有表都同步到订阅服务器上,而且SQLSERVER还支持只同步一张表里的某些列
有些人就是将整个数据库里的表都同步,不管哪些表是经常访问的,哪些表数据量比较大,哪些表不适合加主键或者索引
因为同步的一个条件是,表里必须要有主键,如果你需要同步所有表,那不是所有表都要加上主键??大家知道加上主键
相当于给表加了聚集索引,那么肯定影响数据修改的性能,所以大家只需要把需要同步/发布的表发布出来就可以了
没必要把整个库都发布出来,还有一些存储过程、函数、视图也是一样,只需要同步经常访问的或者必须要用到的就可以了
--------------------------------------------------------华丽的分割线---------------------------------------------------------
复制的前提条件:
(1)为了提高执行效率,可以限制订阅服务器获得的所有数据,或仅发布订阅者真正需要的数据或订阅者有权得到的数据
(2)在实现快照复制之前,为快照复制留出充足的磁盘空间
(3)在实现事务复制之前,分配足够的日志空间,为分发数据库留有足够的磁盘空间
(4)为每一个表创建主键
(5)实现合并复制前移去timestamp列,由于订阅服务器的数据也会传递到发布服务器,
应确保数据的完整性在各个订阅服务器上都能得到保证,维护表之间的关联参照
(6)在所有IDENTITY属性字段上加上NOT FOR REPLICATION设置,以保证SQLSERVER在复制代理程序所添加的行上保留起始标识值,
但是继续在其他用户所添加的行上增加标识值。当用户将某个新行添加到表时,标志值以通常的方式增加。当复制代理程序将该新行复制到
订阅服务器时,再将该行插入到订阅服务器表中时不更改标识值
----------------------------------------------------------华丽的分割线-----------------------------------------------------
下面附上我写的一篇文章,关于复制的介绍和复制的注意事项,如果提高复制性能,定制复制标准,定义复制等
1、只发布必要的表或字段
2、定制性能标准
3、提高常规复制的性能
里面有几个注意点,希望读者可以详细认真地读一下,o(∩_∩)o
希望文章能帮到大家
如有不对的地方,欢迎大家拍砖!!
SQLSERVER复制的要点的更多相关文章
- SQLServer复制(二)--事务代理作业
之前的一篇已经介绍了如何配置复制,介绍了发布者.分发者和订阅者以及事务日志运行的简单关系.其中提到了复制代理,我们这篇将详细介绍复制代理,它是什么?在事务复制的步骤中起到了什么作用? 代理和工作 首先 ...
- SQLSERVER复制优化之一《改变包大小》
SQLSERVER复制优化之一<改变包大小> 自从搭了复制之后以为可以安枕无忧了,谁不知问题接踵而来 这次遇到的问题是丢包,不知道情况的读者可以先看一下我之前写的一篇<SQLSERV ...
- 复制(1)——SQLServer 复制简介
原文:复制(1)--SQLServer 复制简介 前言: SQLServer的复制技术最少从SQLServer2000时代已经出现,当初是为了分布式计算,不是为了高可用.但是到了今天,复制也成为了一种 ...
- SQLSERVER复制优化之一《减少包大小》
原文:SQLSERVER复制优化之一<减少包大小> SQLSERVER复制优化之一<减少包大小> 自从搭了复制之后以为可以安枕无忧了,谁不知问题接踵而来 这次遇到的问题是丢包, ...
- "SQLServer复制需要有实际的服务器名称才能连接到服务器,请指定实际的服务器名"转
"SQLServer复制需要有实际的服务器名称才能连接到服务器,请指定实际的服务器名" 2014-06-12 12:01:10 最近在学习SQL SERVER的高级复制技术的时候 ...
- sqlserver 复制表结构(可以含有数据 或 只要表结构)
sqlserver 复制表结构(可以含有数据 或 只要表结构) SELECT * INTO bb FROM aa(NOLOCK) WHERE 1=0
- SQLServer 复制中移除和添加发布而不初始化所有项目
原文:SQLServer 复制中移除和添加发布而不初始化所有项目 -- 若提前"禁止架构更改",新增的列不会自动添加大发布,此时应使用 sp_articlecolumn 添加列 E ...
- SqlServer 复制中将大事务分成小事务分发
原文:SqlServer 复制中将大事务分成小事务分发 在sql server 复制中,当在发布数据库执行1个大事务时,如一次性操作 十万或百万以上的数据.当操作数据在发布数据库执行完成后 ,日志读取 ...
- SQLServer 复制和数据库镜像 具体配置部署
SQLserver 能够把镜像和复制同一时候部署,结合了两方的高可用性.能够使数据库得到更好的高可用性和容灾的保证. 关于镜像:f=255&MSPPError=-2147217396" ...
随机推荐
- 百度地图API示例之设置地图显示范围
代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...
- 2016/12/14---- C3P0
查询查询一条记录 public UserBean findActiver(String ac) throws SQLException { QueryRunner qr = new QueryRunn ...
- CSS盒子模型学习记录1
http://www.blueidea.com/tech/web/2007/4545.asp 代码试验: html代码: <!DOCTYPE html PUBLIC "-//W3C// ...
- Reactjs 入门基础(一)
实例中我们引入了三个库: react.min.js .react-dom.min.js 和 browser.min.js: 1,react.min.js -React 的 核心库 2,react-do ...
- CString转换成char*
CString转换成char* :charSource = (char*)strSource.GetBuffer(0); 法2:charSource = (char*)strSource.GetBuf ...
- jquery表格增加删除后改变序号
有个小bug,懒得修了. 目的:增加一行的时候,td第一列排序. 删除一行的时候,td第一列排序 <!DOCTYPE HTML> <html> <head> < ...
- Icinga快速安装与配置
Icinga快速安装与配置/* body */body { margin: 20px; padding: 0; font-family: "Lucida Grande", &quo ...
- 分布式Apache ZooKeeper-3.4.6集群安装
fesh个人实践,欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3900253.html Apache ZooKeeper是一个为分布式应用所设计的开源协 ...
- Delphi 字符数组存入文件
TDMSRequestBuffer=object Head:TDMSHead; Data:array[0..2047] of char; DataSize:Integer; p ...
- 设置input 内容居中显示 .
text-align:center 水平居中显示 <style type="text/css"> input.text{text-align:center;paddi ...