自学数据库,请教一下关于主从的问题

2021-05-30 21:42:51 +08:00
 lonelygod365

我是纯自己学习,属于菜鸟中的菜鸟,还请原谅问题的幼稚性。

请问一下如果数据库为了提高性能做了读写分离,假如集群是一主多从,如果主服务器的写性能达到了瓶颈时候,这个咋整?

906 次点击
所在节点    问与答
5 条回复
javapythongo
2021-05-30 22:30:57 +08:00
分库分表
Jooooooooo
2021-05-30 22:45:21 +08:00
所以主从模式只能部分解决问题, 因为写还是单点, 写高了之后主从的模式也没辙

一般会采用两种拆分, 一种是业务隔离, 比较简单拆分不同业务到不同库里, 写自然就分散了

但业务隔离也只能解决部分问题, 单个业务没法继续拆依然会到瓶颈. 这就需要第二种方法, 分库分表

比如用户发帖记录, 按照用户 id 的尾号路由拆成 100 个库, 尾号是 00 的用户都写到第一个库里, 01 写到第二个库里, 如此类推.

这样每个库承担的写就只有原来的 1/100, 能抗更大的写入.
lonelygod365
2021-05-30 23:06:28 +08:00
@Jooooooooo 非常感谢指点,大概听懂了,那么如果这个数据库是提供给多个国家的网友来使用的话,应该如何优化是比较合理的? 我可以认为每个国家都有一模一样的主从集群然后互相做备份?
wd
2021-05-31 08:52:12 +08:00
其实事情没有绝对
一般数据库没那么重的写,即使有,这部分写入的数据也一般不会直接给用户使用,例如会给用户看汇总之后的结果,那么可以写到其他库离线汇总之后写入到这个库,量立马就少了。
分库会带来其他问题,如果需要的数据是在多个库里面,那就必须要有一个所谓数据库中间件来合并数据,这就是另外的性能问题。
这些东西没有实战经验恐怕也不能提前预测到。
shenjinpeng
2021-05-31 09:16:07 +08:00
并发太大可以做缓存,先存 redis 等再插库 .

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

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

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

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

© 2021 V2EX