关于读写分离

2020-05-12 10:52:52 +08:00
 zxc1234

想问下:

我的理解是读写分离是为了读,提升读的效率。

1.那么跟并发有关系吗?

2.用读写分离架构一定是高并发吗?

3.我司一个内部系统,内部人员在使用,但是希望读数据快点,用读写分离会设计过度吗?

谢谢~

2886 次点击
所在节点    程序员
22 条回复
dog82
2020-05-12 10:59:16 +08:00
如果并发不高,没必要读写分离吧,找到慢 sql 优化一下提升也很大
guyeu
2020-05-12 11:16:51 +08:00
1. 和并发有关系,提升效率最终目的是提升并发量;
2. 架构选择和是否高并发没关系;
3. 找到慢的原因,读写分离并不是解决慢的银弹;
snappyone
2020-05-12 11:22:16 +08:00
你先找到慢的原因再说吧
namelosw
2020-05-12 11:27:41 +08:00
1. 一般需要读写分离的系统如果不分离的话写的性能不符合要求,所以分离可以大幅提高写并发能力。
2. 不一定,看怎么实现,比如纯 ES 没快照端压力稍大就要爆炸。
3. 这个信息不够没法回答,而且可能也有别的解法。过不过度,主观题自行掌握。
axyz233
2020-05-12 12:02:44 +08:00
数据库读写分离还是 CQRS 职责分离?
cheng6563
2020-05-12 12:04:48 +08:00
读写分离不用做太多改造,是很容易实现的性能提升方式了
opengps
2020-05-12 13:38:09 +08:00
注意,读写分离是提高并发读,不是提高并发写,适合读写比例相差高的场景,比如 v2,一天接下来写入可能几千次,读出可能得几百万次,这时候读写比例很适合
mtrec
2020-05-12 13:49:11 +08:00
读写分离的场景是读多写少 是提高读的
要提高写的话分库分表
laminux29
2020-05-12 14:09:18 +08:00
老一辈喜欢用读写分离,是因为:

1.他们技术差。
2.他们有提高性能的需求。
3.他们用的软件,提高性能的最简单无脑的做法就是双机做读写分离。

实际上读写分离是一种非常浪费资源的做法,但因为简单无脑,深受技术差的一帮人喜爱。
hbolive
2020-05-12 14:14:58 +08:00
@laminux29 还有个问题,是因为他们那个年代的机器差,跟现在差了几个量级,但是网民或者业务量却没差多少,所以折腾出这玩意儿。。
namelosw
2020-05-12 14:39:06 +08:00
@opengps 也是能提高并发写的,比如顶级的拍卖系统,最后一点时间狂写,每次开 Transaction 更新数据是来不及的,只能 append event 。读模型稍后跟上。

读写分离的意义在于可以读写分开 Scale,这样就不容易被互相绊到。
fihserman123
2020-05-12 14:47:39 +08:00
读写分离的思想和技术栈新旧没有太大关系,Redis 算是新技术吧,也还不是推荐读写分离。写的开销比读大,所以不希望一个库既读又写,光写就吃不消了。读的需求又比写大,所以需要多个只读表。
namelosw
2020-05-12 20:15:44 +08:00
@hbolive 机器好也需要读写分离,因为读写分离提高的是 query 速度。Query 要是慢了什么复杂度都有,靠机器快是搞不定的。

所以有的问题天生适合写的时候对 Query 进行 accumulate,而不是重新 query 。
Jooooooooo
2020-05-13 08:34:36 +08:00
读写分离主要是为了写的性能

为了读的性能没必要分离, 多来几个从库搞定

读写分离说的是主库不是必要不要去读, 机器资源都拿来写入
kanepan19
2020-05-13 09:55:43 +08:00
读写分离,为了避免读影响写, 也为了避免写影响读。
zxc1234
2020-05-13 17:28:37 +08:00
@Jooooooooo 读会影响到写?
zxc1234
2020-05-13 17:30:22 +08:00
@mtrec 那如果读多写少,但是并发不大,用读写分离会设计过度吗?
zxc1234
2020-05-13 17:30:48 +08:00
@laminux29 不用读写分离 用什么呢
Jooooooooo
2020-05-13 17:36:21 +08:00
@zxc1234 会. 挪走读对提升整个写的性能是有帮助的. 所以主库不是迫不得已就不要读.
zxc1234
2020-05-13 17:37:43 +08:00
@Jooooooooo 读怎么影响到写?

另外,我一直觉得因为写有锁啥的会影响读的性能,所以才分离,我是理解错了吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/670834

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX