SqlServer 读写分离

数据库性能

数据库性能:一般在系统中,性能问题,数据库会先凸显出来! 业务量增大、数据量增大!

解决方法

1.加强硬件,定制商业数据库! ---花钱!

2.从架构层面去解决,通常的手段就是让数据库少做事!(直接去掉存储过程,外键,函数,触发器),同时添加索引!

3.数据库负载均衡!使用多台数据库,做一台数据库的事儿!

问题:无法更好的保证数据的一致性! 更多的是增强它的读取能力!

增删改查其实还是无法解决!因为增删改还是需要去多个数据库去处理, 处理这个大部分也是花钱解决!

4.数据库的读写分离!

 

 读写分离会存在一个主库和多个从库,主库主要负责增删改,从库负责查询。主库发布到第三方服务器,其他从库订阅主库。

实现方法: 

(1)如果是自己做测试的话可以直接做一个定时任务,使用 数据库作业将每隔一段时间将数据同步到从库上

 (2)日志传送

 (3) 镜像snapshot:内存快照!最省事儿,也是性能最快的;

 (4)数据复制

   可以在主库上做增删改,然后将数据推送到从库上,也可以从库主动到主库上获取数据。观察者模式(发布订阅);会有延迟!

下面实际操作一下:

首先,如果你把主从库都放在同一个服务器上的话,需要在服务里开启一下sqlserver代理:

 其次,还有设置一个共享文件夹,新建文件夹,然后设置成共享的,这样根据红框中的路径我们就能访问这个文件夹:

配置分发服务器

分发服务器的作用:分发服务器包括分发数据库,并且存储元数据、历史数据和事务。根据所实施复制类型的不同,分发服务器所扮演的角色也各异,一般情况下与合并复制相比较,分发服务器对于快照复制和事务复制的角色更重要。更简单的可以理解为负责将发布服务器发来的数据拿到订阅服务器。

点击复制,右键-》选中配置分发,如果是同一个服务器上既有主库又有从库,就选中第一个,否则选第二个:

 一直点击下一步,来到这个界面,快照文件夹下面的内容就是创建共享文件的路径:

 之后一直点击下一步来到这个界面,点击完成:

 配置成功:

配置发布服务器

 发布服务器:数据的来源服务器,维护源数据,决定哪些数据将被分发,检测哪些数据发生了修改,并将这些信息提交给分发服务器。

 在本地发布这里右键,选择新建发布,选中发布的数据库:

选择事务发布,点击下一步: 

 选择对应的表和存储过程,因为TEST数据库中只有表和存储过程,如果还有视图,自定义函数等的话也会在这里显示,选中之后,只有对应的表或者其他存储过程,函数之类的出现更改,对应的订阅服务器也会更改,点击下一步:

 

 在这里可以设置哪些能够接收,在这里我们不做筛选,点击下一步:

 

 在这里可以设置在什么时间运行,我们这里直接选择第一个,点击下一步:

 

 因为我们都是同一个电脑上运行的,所以按照下面的方式选择,点击下一步:

 点击下一步:

 然后填写发布名称,点击完成:

 创建成功:

 再回到之前创建的共享文件中,所有发布的文件都会出现在这里:

 

 配置订阅服务器

首先选中本地订阅:

 在这里我们默认第一个,点击下一步:

 在这里选择新建数据库(新建的数据库就是对应的订阅数据库),点击确定之后,点击下一步:

 在这里配置分发代理安全性:

 

 之后一直点击下一步,最后点击完成:

 

 此时就会订阅成功。在源数据库中更改表结构,表中的数据变化对应的订阅数据库都会进行改变。需要注意的是如果对应的表被订阅了,在源数据库中就没法更改表明,也无法直接删除表,需要通过这种方式。但是主库新增表,存储过程等,从库是不会自动生成的。还有就是如果更改了主库的表中的某列的信息,从库对应的信息才会变化,肯定是有一种机制,确定这个地方做修改了,就会更改从库中对应的地方,否则是不会做无用的操作的,就是说不会做整体的检查,看这个库和主库哪些地方不一样然后改成和主库一模一样的。

  

(1)快照发布    快照发布指在某一时刻给出版数据库中的出版数据照相,然后将数据复制到订阅者服务器。快照复制实现较为简单,其所复制的只是某一时刻数据库的瞬间数据,快照复制是将整个出版物传送给订阅者,就是在某一时刻将出版数据进行一次“照相”,生成一个描述出版数据库中数据的当前状态的一个文件,然后在相应的时间将其复制到订阅的数据库上,快照复制并不是不停的监视出版数据库中发生的变化情况,它是对出版数据库进行一次扫描,把所有出版数据中的数据从源数据库送至目标数据库,而不仅仅是变化的数据。如果数据量很大,那么要复制的数据就很多。因此对网络资源要求很高,不仅要有较快的传输速度,而且要保证传输的可靠性。快照复制是最为简单的一种复制类型,能够在出版者和订阅者之间保证数据的一致性。快照复制通常使用在以下场合:在一定时间内出现大量的更改的操作,但数据总量不大,变化周期较长。

(2)事务发布    快照发布是将整个数据集发送给订阅服务器,由于体积大而造成复制周期较长,会形成复制滞后问题。那么事务复制使用事务日志来生成将复制到订阅服务器的事务,因为它只复制事务也就是变化,所以滞后也比快照复制低得多。

(3)合并发布   合并发布是为移动用户设计的,可以在发布服务器或是订阅服务器处执行修改,在合并代理运行时,这些修改将同步,多用于发布服务器与订阅服务都修改数据的情况下。工作原理如下:在要复制的每个表上实现触发器,并使用包含GUID列唯一标识要复制的表中的每一行。对其中的任何一个表进行修改时,都会将更改记录到一个数据表中,在合并代理运行时,它收集数据表中的GUID,这些GUID指出了在发布服务器和订阅服务器处修改过的行。对于只在发布服务器或是订阅端修改的数据则直接进行相应操作,如INSERT,UPDATE,DELETE,如果双方都有GUID则按照用户指定的方式解决冲突,默认发布服务器优先。

 sqlserver发布订阅教程,这个写的很好

 这个讲解的概念很好

 分发,发布和订阅都在不同服务器上的讲解

 SQLSERVER2008R2设置读写分离,很好

原文地址:https://www.cnblogs.com/anjingdian/p/15354686.html