我们在开发系统的时候,经常会遇到高并发的问题,还有高可用性和安全性方面的考虑,需要用读写分离的方案来解决问题。也就是在我们使用数据库比较多,更新少而查询比较多的情况下使用读写分离,实现提高性能,减少数据库压力。

为啥要用读写分离呢?

因为数据库的“写”操作是比较耗时的 但是数据库的“读”操作却很快。 所以读写分离,解决的是,数据库的写入,影响了查询的效率。

1、读写分离

基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

2、主从数据库数据同步

读写分离要实现的最重要的一点就是要实现主从数据库数据同步,否则就会造成读写不同步。今天我们说的是sqlserver主从数据库的数据同步,采用sqlserver发布订阅功能来实现。接下来开始配置,我们是在本地测试的。

首先在需要在本地创建俩数据库Demo1和Demo2,并在Demo1中建一个表student。然后找到下面图示圈中的功能

在本地发布右键->新建发布,如下图

直接下一步。进入发布数据库页面,这里发布的就是主数据库,选择Demo1,下一步

打开发布类型选择页面,这里我们选择事务发布,可以在更新主数据库的同时同步到从数据库。当然这里我们也可以选择其他选项,例如快照发布,我们可以设置数据更新发布频率(在使用快照发布的时候需要注意:要到服务启动SQL Server 代理 (MSSQLSERVER),因为它默认情况下是停止的,需要手动启动)

然后继续下一步,将要发布的数据库中的对象选中

下一步

继续下一步,打开如下刷选表行,也就是我们可以在这里添加筛选条件,实现符合条件的数据进行发布,我们这里直接下一步

在下图中凉复选框选中,然后打开更改,设置发布频率,我们这里间隔时间设置为10秒

然后确定,下一步进行安全设置

确定并下一步

下一步

设置发布名称,并点击完成,出现下图就说明发布成功了。

然后还有新建订阅,右键->新建订阅

出现下图就说明订阅新建成功。

好了,这样就实现了发布订阅,主从数据库数据同步。Demo2数据库里也有和Demo1数据库里一样的表结构。

这时候我们就可以在Demo1数据库的student表里添加一行数据,然后去查询Demo2数据库里的student表,发现数据已经同步过来了。

注:如果我们想把Demo1里新建的表或者存储过程也实现同步怎么做?

选中建好的发布,右键->属性,执行下面步骤,即可同步更新新建表和存储过程。

SqlServer发布订阅的更多相关文章

  1. SqlServer发布订阅错误收集

    原文:SqlServer发布订阅错误收集 目录 1. SqlServer发布订阅错误收集 1.1. Message:脚本对于表"dbo.table"失败. 1.1.1. 错误消息 ...

  2. SQLServer 发布订阅(Replication)造成的Memroy压力(cmemthread等待)

    深入了解下发布订阅:     数据复制:允许一个数据源向一个或多个目标数据库分发数据,只需要OLE DB 访问接口即可访问: 整个复制框架包含:复制组件,复制代理,复制类型: 复制组件: 发布服务器: ...

  3. 知方可补不足~Sqlserver发布订阅与sql事务的关系

    回到目录 前几讲说了一下通过sqlserver的发布与订阅来实现数据的同步,再通过EF这个ORM架构最终实现架构系统的读写分离,而在使用发布与订阅来实现数据同步时,需要我们注意几点,那就是当操作被使用 ...

  4. 使用SQLServer同义词和SQL邮件,解决发布订阅中订阅库丢失数据的问题

    最近给客户做了基于SQLServer的发布订阅的“读写分离”功能,但是某些表数据很大,经常发生某几条数据丢失的问题,导致订阅无法继续进行.但是每次发现问题重新做一次发布订阅又非常消耗时间,所以还得根据 ...

  5. SQLServer 2008 R2 发布订阅配置指南

    原以为配置SQLServer 2008 R2的发布订阅很简单,实际配置后才发现过程中有问题地方一直都没搞明白,最后经过几天的查找问题和实践,终于搞定了.现将过程记录如下. SQLServer 2008 ...

  6. 最简单的SQLserver,发布订阅教程,保证一次就成功

    最简单的SQLserver,发布订阅教程,保证一次就成功 发布订阅用来做数据库的读写分离,还是很好用的 当单台数据库的压力太大时,可以考虑这种方案,一主多从,主服务器的数据库只管写入,其他的数据库都是 ...

  7. sqlserver 实时同步(发布订阅)

    配置发布订阅手册 不同版本须知:https://www.sqlmanager.net/en/articles/1548 向后兼容性:参考https://docs.microsoft.com/zh-cn ...

  8. sqlserver关于发布订阅replication_subscription的总结

    (转载)sqlserver关于发布订阅replication_subscription的总结 来自 “ ITPUB博客 ” ,原文地址:http://blog.itpub.net/30126024/v ...

  9. 对已经发布订阅的sqlserver进行修改-添加新的表

    1.以服务器名称连接数据库 2.找到复制-本地发布-对应的数据库发布订阅-右键属性-选择项目-选择新增的表(没有看到,注意取消右侧的仅显示列表已选择的项目) 3.然后重新初始化所有订阅 4.如果出现“ ...

随机推荐

  1. re模块之research

    2. re.research re.research扫描整个字符串并返回第一个成功的匹配. 2.1函数语法: re.search(pattern, string, flags=0) 参数 描述 pat ...

  2. python gun readline

    https://github.com/ludwigschwardt/python-gnureadline

  3. out.write(b,0,len)怎么解释?

    参数 缓冲区——要写的数据 从——开始偏移量数据 len——写的字节数 返回值 这个方法不返回一个值. 异常 IOException

  4. Spring Data JPA 参考指南 中文版

    附下载地址:https://www.gitbook.com/book/ityouknow/spring-data-jpa-reference-documentation/details

  5. iOS中wkwebview加载本地html的要点

    项目中有些页面,我采用了html页面开发,然后用wkwebview加载的设计.在加载过程中遇见了一些问题,在这里进行一些记载和讨论.如有不同意见欢迎进行评论沟通. 问题时候这样的: 在webview的 ...

  6. HEIDSOFT

    HEIDSOFT ENTHUSIASTIC GITHUB USER heidsoft@sina.com GitHub Profile I'm a developer based in China.sh ...

  7. jdk8中LocalDateTime,LocalDate,LocalTime等日期时间类

    package com.zy.time; import org.junit.Test; import java.time.*; import java.time.format.DateTimeForm ...

  8. 无网络安装mysql步骤

    1. 先安装Microsoft Visual C++ 2010 运行环境,运行vcredist_x86.exe文件: 2. 安装MySql数据库,运行mysql-installer-community ...

  9. OpenCV学习记录(一):使用haar分类器进行人脸识别 标签: opencv脸部识别c++ 2017-07-03 15:59 26人阅读

    OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification).OpenCV2之后的C++接口除了Haar特征 ...

  10. java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串)

    总结一些日期常用的代码,方便以后直接拿 <code> /** * java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串) * @param year * @param m ...