作者:手机用户2602922511 | 来源:互联网 | 2023-08-16 13:21
为什么sqlserver的复制订阅能够实现数据的读写分离,在我们采用读写分离的技术时,一般都是Master负责Write,然后进行事务发布.Slave进行订阅,负责read.,但是master中的数
为什么sqlserver 的复制订阅能够实现数据的读写分离,在我们采用读写分离的技术时,一般都是Master负责Write,然后进行事务发布.Slave进行订阅,负责read.,但是master中的数据最终还是要同步到slave中的,这最终还是要实现向slave中进行写的,为啥说它是读写分离呢,难道就是因为这个写的操作延后了,有点糊涂,希望高人解释一下原理,谢谢
16 个解决方案
假设我现在有3台数据库服务器,我在前台应用程序中,安照不同的算法,跳转到这三台不同的数据库中,去读写,一样是减轻了读写的压力,复制订阅是否和这个做法一样?
这个概念这样解释,虽然slave是需要写的,但是时效要求已经是不严格的了,因为复制是异步的,另外,master写的过程往往涉及很多复杂的逻辑判断,在slave是不必的,slave读取的是master的最后的数据库操作日志,可直接对数据库数据进行修改,也就是说效率差别是很大的。
分享是相对的
说成把读取操作分散到多台服务器(复制订阅端)应该是更准确的描述方式
我认为,这个读写分离和你的算法跳转其实是数据库负载均衡的两种方式。
读写分离的好处是,可以根据需要进行相关配置,如在读服务器上把read cache开的大一些,而在写服务器上可以把write cache开的大一些;
而你的算法跳转方式,其实是根据业务需要进行的数据切分,如果业务应用需要和你的算法不一致的话,那就很难办。比如,如是按年进行数据切分的,但是如果业务要求按找用户id进行查询,那就有些麻烦了(需要从3个服务器分别查询然后再进行汇总)。
在大型的实际应用中,这两种方式都是需要的。一般的做法是:先根据需求对数据库进行垂直切分,然后根据数据量情况进行水平切分,切分后的数据如果负载还是很大的话,那再进行读写分离。当然,如果业务需要不能进行切分或者没必要进行切分时,也可直接进行读写分离。
PS:大家所说的老大是6楼的邹建,邹老大喔!!sql传说中的神人!!
唉,惭愧,有高人在此,在下不了解,多有得罪,不过还是希望能给一些意见,不要老是惜字如金
你哪里不理解,它的作用主要是把读操作分流到多台服务器上,以减轻主服务器的压力。
读写分析主要是为了减轻master的压力,可以避免数据堵塞或死锁的情况