SQLServer 主从技术包含:复制、日志传送、镜像、AlwaysOn。其中AlwaysOn是2012版本才增加的机制。

几种技术对比:

读写分离方案

实时同步

副本数据是否直接可读

副本数

最小粒度

副本建立索引

环境

缺点

镜像

否(需要开启快照,只读)

1

域/非域(使用证书)

在高安全模式下对主库性能有一定影响

日志传送

是(只读)

N

UNC方式可访问 

副本库在做resotre时会断开已连接用户连接/可能影响常规日志备份

复制(发布订阅)

是(读写,但写可能会产生数据不一致)

N

表(查询)

域/非域

在主库上有大量DML操作时,对分发服务器会有一定影响,且订阅数据库可能有数据同步延迟

always on

是(只读)

4(sql 2012)

8(sql 2014)

非域环境无法使用

 

 

 

 

 

 

 

 

 

 

 

sql server always on 读写分离 sqlserver数据库读写分离_服务器

 

读写分离

一般情况下,系统的所有数据表都在同一个数据库中,简单方便的提升性能的方式就是做读写分离,将非实时性数据同步到另外一个数据库中,在此数据库只进行读操作,从而提升系统的并发查询能力。

1.通过将“读”操作和“写”操作分离到不同的数据库服务器上,降低对主服务器的CPU、内存、存储、网络资源的争用;

2.主服务器的增删改进行时,不影响查询服务器的查询,降低阻塞的发生,提高了并发性;

3.在应用程序提交了报表请求、不合理的查询请求时,不会导致长时间的锁表;

4.建立容灾副本甚至实现异地容灾,在发生灾难时,可以减少数据的损失;

绝大部分的企业内部应用,可能不需要上图那么庞大的架构,一台主数据库服务器和一台查询服务器通常能满足读写分离的要求。而且应用程序调整起来非常方便:

1.在应用程序的配置文件中设置两个数据库连接字符串,一个指向主服务器,一个指向查询服务器;

2.增删改或者实时性查询使用指向主服务器的连接字符串;

3.允许非实时的查询及报表请求使用指向查询服务器的连接字符串。

sql server always on 读写分离 sqlserver数据库读写分离_数据库_02