V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lonelygod365
V2EX  ›  问与答

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

  •  
  •   lonelygod365 · 2021-05-30 21:42:51 +08:00 · 849 次点击
    这是一个创建于 1068 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    5 条回复    2021-05-31 09:16:07 +08:00
    javapythongo
        1
    javapythongo  
       2021-05-30 22:30:57 +08:00
    分库分表
    Jooooooooo
        2
    Jooooooooo  
       2021-05-30 22:45:21 +08:00
    所以主从模式只能部分解决问题, 因为写还是单点, 写高了之后主从的模式也没辙

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

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

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

    这样每个库承担的写就只有原来的 1/100, 能抗更大的写入.
    lonelygod365
        3
    lonelygod365  
    OP
       2021-05-30 23:06:28 +08:00 via iPhone
    @Jooooooooo 非常感谢指点,大概听懂了,那么如果这个数据库是提供给多个国家的网友来使用的话,应该如何优化是比较合理的? 我可以认为每个国家都有一模一样的主从集群然后互相做备份?
    wd
        4
    wd  
       2021-05-31 08:52:12 +08:00 via iPhone
    其实事情没有绝对
    一般数据库没那么重的写,即使有,这部分写入的数据也一般不会直接给用户使用,例如会给用户看汇总之后的结果,那么可以写到其他库离线汇总之后写入到这个库,量立马就少了。
    分库会带来其他问题,如果需要的数据是在多个库里面,那就必须要有一个所谓数据库中间件来合并数据,这就是另外的性能问题。
    这些东西没有实战经验恐怕也不能提前预测到。
    shenjinpeng
        5
    shenjinpeng  
       2021-05-31 09:16:07 +08:00
    并发太大可以做缓存,先存 redis 等再插库 .
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2190 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:30 · PVG 10:30 · LAX 19:30 · JFK 22:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.