我们在开发系统的时候,经常会遇到高并发的问题,还有高可用性和安全性方面的考虑,需要用读写分离的方案来解决问题。也就是在我们使用数据库比较多,更新少而查询比较多的情况下使用读写分离,实现提高性能,减少数据库压力。
为啥要用读写分离呢?
因为数据库的“写”操作是比较耗时的 但是数据库的“读”操作却很快。 所以读写分离,解决的是,数据库的写入,影响了查询的效率。
1、读写分离
基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。
2、主从数据库数据同步
读写分离要实现的最重要的一点就是要实现主从数据库数据同步,否则就会造成读写不同步。今天我们说的是sqlserver主从数据库的数据同步,采用sqlserver发布订阅功能来实现。接下来开始配置,我们是在本地测试的。
首先在需要在本地创建俩数据库Demo1和Demo2,并在Demo1中建一个表student。然后找到下面图示圈中的功能
在本地发布右键->新建发布,如下图
直接下一步。进入发布数据库页面,这里发布的就是主数据库,选择Demo1,下一步
打开发布类型选择页面,这里我们选择事务发布,可以在更新主数据库的同时同步到从数据库。当然这里我们也可以选择其他选项,例如快照发布,我们可以设置数据更新发布频率(在使用快照发布的时候需要注意:要到服务启动SQL Server 代理 (MSSQLSERVER),因为它默认情况下是停止的,需要手动启动)
然后继续下一步,将要发布的数据库中的对象选中
下一步
继续下一步,打开如下刷选表行,也就是我们可以在这里添加筛选条件,实现符合条件的数据进行发布,我们这里直接下一步
在下图中凉复选框选中,然后打开更改,设置发布频率,我们这里间隔时间设置为10秒
然后确定,下一步进行安全设置
确定并下一步
下一步
设置发布名称,并点击完成,出现下图就说明发布成功了。
然后还有新建订阅,右键->新建订阅
出现下图就说明订阅新建成功。
好了,这样就实现了发布订阅,主从数据库数据同步。Demo2数据库里也有和Demo1数据库里一样的表结构。
这时候我们就可以在Demo1数据库的student表里添加一行数据,然后去查询Demo2数据库里的student表,发现数据已经同步过来了。
注:如果我们想把Demo1里新建的表或者存储过程也实现同步怎么做?
选中建好的发布,右键->属性,执行下面步骤,即可同步更新新建表和存储过程。