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

MySQL 是单进程多线程,那么在单台服务器上进行分库有意义吗?分库是怎么提升并发处理能力的呢?

  •  1
     
  •   pudgedoor · 2018-11-15 10:35:36 +08:00 · 3970 次点击
    这是一个创建于 2235 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚刚在看 MySQL 的分库分表博客有感,网上大部分只说了分库就能提升并发处理能力,但是查了半天也没发现有人说为什么,在同一个服务器上 IO 不是由机器限制了吗,那么在同一个服务器上,提升 database 的数量有什么用呢?

    10 条回复    2018-11-16 01:27:37 +08:00
    glacer
        1
    glacer  
       2018-11-15 11:59:15 +08:00   ❤️ 1
    分库后单库数据量变小,下推到分库的 SQL 查找的数据量也变小了,减少了 CPU 的使用量。
    pudgedoor
        2
    pudgedoor  
    OP
       2018-11-15 14:52:46 +08:00 via Android
    @glacer 谢谢,不过还是不太理解。数据量变小那不是和分表一样吗?为什么分库就能提升并发性能呢,分表就只能加快查询速度呢?
    xttanwei
        3
    xttanwei  
       2018-11-15 14:55:08 +08:00
    因为分表分库后,单次查询效率提升了,所以并发性能也有提升撒。
    wly19960911
        4
    wly19960911  
       2018-11-15 15:38:50 +08:00
    锁的问题吗,不熟悉数据库锁的路过,如果是考虑到锁机制的话,还是有影响的,毕竟不同的等级对库的性能都影响很大
    pudgedoor
        5
    pudgedoor  
    OP
       2018-11-15 15:48:56 +08:00
    @wly19960911 锁这个概念应该是对 table 而言吧
    pudgedoor
        6
    pudgedoor  
    OP
       2018-11-15 15:52:43 +08:00
    @xttanwei 我可以理解分表可以提升单次查询效率,毕竟单表数据少了,但是为什么分库也可以提升单次查询效率?比如说根据 id 查询,分表后,单表数据少了,根据 id 检索当然更快了,但是为什么分库可以更快呢?
    xttanwei
        7
    xttanwei  
       2018-11-15 19:30:53 +08:00
    @pudgedoor 大部分的分库都是进行了业务或者数据上的区分,对应的业务实现也会有相应的模块化,所以降低了业务复杂度,最终提升了查询效率
    autogen
        8
    autogen  
       2018-11-15 19:45:50 +08:00
    mysql,单表 1000 万条记录就是极限了。。。
    ETiV
        9
    ETiV  
       2018-11-15 19:48:14 +08:00 via iPhone
    当木桶看

    - IO 短板的时候,再怎么分也没用
    - 需要处理的数据量短板的时候,分就有用了
    msg7086
        10
    msg7086  
       2018-11-16 01:27:37 +08:00
    你可以看看是谁说的,然后问他们?我是没觉得分库比分表有太大的优势……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   933 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 22:10 · PVG 06:10 · LAX 14:10 · JFK 17:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.