热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

来看看,为什么sqlserver的复制订阅能够实现数据的读写分离?

为什么sqlserver的复制订阅能够实现数据的读写分离,在我们采用读写分离的技术时,一般都是Master负责Write,然后进行事务发布.Slave进行订阅,负责read.,但是master中的数
为什么sqlserver 的复制订阅能够实现数据的读写分离,在我们采用读写分离的技术时,一般都是Master负责Write,然后进行事务发布.Slave进行订阅,负责read.,但是master中的数据最终还是要同步到slave中的,这最终还是要实现向slave中进行写的,为啥说它是读写分离呢,难道就是因为这个写的操作延后了,有点糊涂,希望高人解释一下原理,谢谢

16 个解决方案

#1


假设我现在有3台数据库服务器,我在前台应用程序中,安照不同的算法,跳转到这三台不同的数据库中,去读写,一样是减轻了读写的压力,复制订阅是否和这个做法一样?

#2


这个概念这样解释,虽然slave是需要写的,但是时效要求已经是不严格的了,因为复制是异步的,另外,master写的过程往往涉及很多复杂的逻辑判断,在slave是不必的,slave读取的是master的最后的数据库操作日志,可直接对数据库数据进行修改,也就是说效率差别是很大的。

#3


引用 1 楼 xiaosun830910 的回复:
假设我现在有3台数据库服务器,我在前台应用程序中,安照不同的算法,跳转到这三台不同的数据库中,去读写,一样是减轻了读写的压力,复制订阅是否和这个做法一样?

读写分开主要解决大并发量的,也就是一秒钟内几十万访问的压力,如果在前台应用程序跳转,势必将数据库信息放在前台应用程序,安全性很难保证。
另外3台数据库服务器表示你在数据写入的时候必须3台数据库服务器全部完成你的写入动作才算完成,这样写入过程会复杂而且低效。

#4


引用 3 楼 nbdba 的回复:
引用 1 楼 xiaosun830910 的回复:
假设我现在有3台数据库服务器,我在前台应用程序中,安照不同的算法,跳转到这三台不同的数据库中,去读写,一样是减轻了读写的压力,复制订阅是否和这个做法一样?

读写分开主要解决大并发量的,也就是一秒钟内几十万访问的压力,如果在前台应用程序跳转,势必将数据库信息放在前台应用程序,安全性很难保证。
另外3台数据库服务器表示你在数据写入的时候必……

所谓的前台应用程序跳转,只是通过与数据库连接的字符串来选择对应的数据库地址(当然也必须使用对应用户名密码),在安全性上我觉的不至于差到哪里去,因为这也是目前常用的一种做法;
对于3台数据库,我会把数据按照一定的规则,放入3台服务器,比如2011年的放入A 数据库,2012年的放入B库,2013年的放入C库,这样前台的并发(读或写)一样会分担到三台服务器,这样的效率比起复制订阅,A是msater,B和C是Slave,那个更好?还有复制订阅,是很浪费资源吗?主要浪费在那个地方?

#5


唉,还是没人再给解释解释吗?

#6


分享是相对的
说成把读取操作分散到多台服务器(复制订阅端)应该是更准确的描述方式

#7



没看花眼吧,老大出现了。。。

#8


引用 7 楼 perfectaction 的回复:
没看花眼吧,老大出现了。。。
,这是怎么个意思?呵呵,就等你给我解释了,你才是老大

#9


引用 7 楼 perfectaction 的回复:
没看花眼吧,老大出现了。。。
真不好意思,最近要解决数据库这一块,遇到的问题挺多,我也是边摸索边前行,所以想不明白的地方,就跑上来问问,让人见笑了,这也叫不打不相识啊

#10


我认为,这个读写分离和你的算法跳转其实是数据库负载均衡的两种方式。
读写分离的好处是,可以根据需要进行相关配置,如在读服务器上把read cache开的大一些,而在写服务器上可以把write cache开的大一些;
而你的算法跳转方式,其实是根据业务需要进行的数据切分,如果业务应用需要和你的算法不一致的话,那就很难办。比如,如是按年进行数据切分的,但是如果业务要求按找用户id进行查询,那就有些麻烦了(需要从3个服务器分别查询然后再进行汇总)。

在大型的实际应用中,这两种方式都是需要的。一般的做法是:先根据需求对数据库进行垂直切分,然后根据数据量情况进行水平切分,切分后的数据如果负载还是很大的话,那再进行读写分离。当然,如果业务需要不能进行切分或者没必要进行切分时,也可直接进行读写分离。

PS:大家所说的老大是6楼的邹建,邹老大喔!!sql传说中的神人!!

#11


唉,惭愧,有高人在此,在下不了解,多有得罪,不过还是希望能给一些意见,不要老是惜字如金

#12


看来还的顶顶啊

#13


再顶顶吧,期望有人回答

#14


你哪里不理解,它的作用主要是把读操作分流到多台服务器上,以减轻主服务器的压力。

#15


引用 4 楼 xiaosun830910 的回复:
引用 3 楼 nbdba 的回复:

引用 1 楼 xiaosun830910 的回复:
假设我现在有3台数据库服务器,我在前台应用程序中,安照不同的算法,跳转到这三台不同的数据库中,去读写,一样是减轻了读写的压力,复制订阅是否和这个做法一样?

读写分开主要解决大并发量的,也就是一秒钟内几十万访问的压力,如果在前台应用程序跳转,势必将数据库信息放在前台应用程序,安全性很难保证。
另外……

你说的解决方法是水平分区,但是例子不是很好,你按年份分三个服务器,但是要知道,现在查询的大部分是最近的数据,即2011年的,这样你的压力还是集中在一个服务器中。
水平分区也是一个解决方法,但分区方法必须选择,比如你按照某个ID比如客户ID来分就会好得多。
但是水平分区最大的缺点是你需要修改程序来适应你的分区方法,很难做到透明处理。

注意下3楼的回复,读写分开的主要用途。

#16


读写分析主要是为了减轻master的压力,可以避免数据堵塞或死锁的情况

推荐阅读
  • 从分布式数据库选型的第一件事谈起
    本文很长,谨慎阅读现在在我们的面前摆着太多的分布式数据库可以让我们选择,那么如果我想先让 ... [详细]
  • 在Sqlserver数据库历代版本当中,系统数据库有四个,master,model,msdb,tempdbmaster----记录SQLServer系统的所有系统级信息。这包括实例范围的元数 ... [详细]
  • 在目标队列中对消息进行排队时出现异常。错误:15404,状态:19。CouldnotobtaininformationaboutWindowsNTgroupuserSERVER ... [详细]
  • 一个不错的JDBC连接池教程(带具体例子)
    1.前言数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游 ... [详细]
  • 如何实现Percona Mysql Galera多读写集群的部署
    本篇文章给大家主要讲的是关于如何实现PerconaMysqlGalera多读写集群的部署的内容,感兴趣的话就一起来看看这篇文章吧,相信看完如何实现PerconaMysq ... [详细]
  • Mybatis源码解析——Executor
    ExecutorExecutor提供了数据库操作的一些方法以及Mybatis的缓存和事物管理功能。模板方法模式要实现某个方法,必须经过很多算法,但这些算法的顺序是固定的,将算法的运 ... [详细]
  • kafka是一款基于发布与订阅的消息系统。它一般被称为“分布式提交日志”或者“分布式流平台”。文件系统或者数据库提交日志用来提供所有事物的持久化记录,通过重建这些日志 ... [详细]
  • 实战分析SpringBoot整合JSON,面试题附答案
    前言作为同时具备高性能、高可靠和高可扩 ... [详细]
  • 简介时间同步是指以中心控制系统的标准时钟作为基准使各分布系统和终设备的时钟与中心控制系统时钟进行同步的过程。随着5G和工业5.0的到来,网络终端设备和网络业务的飞速增 ... [详细]
  • 操作系统基础知识(常用面试题)
    1.进程和线程有什么区别?进程(Process)是系统进行资源分配和调度的基本单位,线程(Thread)是CPU调度和分配 ... [详细]
  • 本文介绍了Paxos的世界中关于复制日志与状态机的概念和重要性。通过存储日志来实现数据的持久化,并通过日志流来记录数据的变化,而不是直接持久化数据本身。这样做的好处是简化了持久化存储的操作,并且方便多机之间的数据同步。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 微软平台的软件开发系统中,有着一套自己的约定规则。熟悉.net开发的都会对异常处理不陌生,现阶段的各种编程语言中,都不乏异常处理机制,个中原理也都大同小异。sqlserver在批处 ... [详细]
  • Java连接SqlServer2008数据库(转)
    Java连接SqlServer2008数据库首先下载JDBC:下载地址:http:www.microsoft.comzh-cndownloaddetails.aspx?id21599下载 ... [详细]
  • 以下数据来源于TRDIR,TRDIRT,有一些对应系统的事务,有具体的T-CODE.以下我会标注一些我个人认为会常用到的.程序功能描述RSORA000O ... [详细]
author-avatar
手机用户2602922511
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有