热门标签 | 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的压力,可以避免数据堵塞或死锁的情况

推荐阅读
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • Navicat Premium中MySQL用户管理:创建新用户及高级设置
    本文作为Navicat Premium用户管理系列的第二部分,主要介绍如何创建新的MySQL用户,包括设置基本账户信息、密码策略、账户限制以及SSL配置等。 ... [详细]
  • Golang与微服务架构:构建高效微服务
    本文探讨了Golang在微服务架构中的应用,包括Golang的基本概念、微服务开发的优势、常用开发工具以及具体实践案例。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 本文详细探讨了 HAProxy 的基本概念及其与 LVS(Linux Virtual Server)的比较,特别是在内核空间与用户空间的工作差异。文章还深入介绍了 HAProxy 独有的数据结构——弹性二叉树,以及其在高并发场景下的表现。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 1.3.4ProfilerSQLServerProfiler是一个图形化的管理工具用于监督记录和检查SQLServer数据库的使用情况对系统管理员来说它是一个监视用户活动的间谍1. ... [详细]
  • 微软平台的软件开发系统中,有着一套自己的约定规则。熟悉.net开发的都会对异常处理不陌生,现阶段的各种编程语言中,都不乏异常处理机制,个中原理也都大同小异。sqlserver在批处 ... [详细]
  • Java连接SqlServer2008数据库(转)
    Java连接SqlServer2008数据库首先下载JDBC:下载地址:http:www.microsoft.comzh-cndownloaddetails.aspx?id21599下载 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • J2EE平台集成了多种服务、API和协议,旨在支持基于Web的多层应用开发。本文将详细介绍J2EE平台中的13项关键技术规范,涵盖从数据库连接到事务处理等多个方面。 ... [详细]
  • Spring Boot 初学者指南(第一部分)
    本文介绍了Spring Boot框架的基础知识,包括其设计理念、主要优势以及如何简化传统的J2EE开发流程。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
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社区 版权所有