用分库来降低数据库压力,但是分开的库仍然在同一台硬件服务器,这样的方案有用吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abcbuzhiming
V2EX    数据库

用分库来降低数据库压力,但是分开的库仍然在同一台硬件服务器,这样的方案有用吗?

  •  1
     
  •   abcbuzhiming 2018-10-15 09:41:12 +08:00 4534 次点击
    这是一个创建于 2629 天前的主题,其中的信息可能已经有所发展或是发生改变。
    实践中看到过这样的方案,分库来降低数据库压力,但是分开的库仍然运行在一台硬件服务器上。我仔细想了想,这样分开的库还是要受到这台硬件服务器的 I/O 性能的限制,和不分开比,似乎一点也没有增加性能啊
    25 条回复    2018-10-15 17:47:18 +08:00
    niubee1
        1
    niubee1  
       2018-10-15 09:43:02 +08:00
    没用
    dorothyREN
        2
    dorothyREN  
       2018-10-15 09:43:24 +08:00
    可能会增加,也可能会下降,这个要看具体业务类型了
    KingEngine
        3
    KingEngine  
       2018-10-15 09:43:47 +08:00
    一双手干活总比一只手好吧
    yikyo
        4
    yikyo  
       2018-10-15 09:45:14 +08:00
    不分库:从 1000W 条数据里面查询。
    分库:从 500W 条数据里面查询。
    楼主明白了吗?
    yamedie
        5
    yamedie  
       2018-10-15 09:47:03 +08:00
    @yikyo 楼上说的是分表?
    night98
        6
    night98  
       2018-10-15 09:49:42 +08:00
    这个得看机器实际性能和 cpu 核心数来分析了,如果 cpu 核心利用率不高的话,通常分库还是有点作用的。
    xiaoyunwei2
        7
    xiaoyunwei2  
       2018-10-15 09:51:55 +08:00
    just try
    popbones
        8
    popbones  
       2018-10-15 09:51:59 +08:00
    硬件影响的是速度,分库改善的是有些查询的时间复杂度。最简单的例子,比方说你有一个客户订单的表,查询一个客户的订单总数,需要筛选所选客户,然后数所有的条目;而如果你一个客户一个表,订单总数就等于表的大小。显然复杂度是不一样的。
    opengps
        9
    opengps  
       2018-10-15 10:02:56 +08:00 via Android
    没用,你可以在同服务器不同物理硬盘上
    yulitian888
        10
    yulitian888  
       2018-10-15 10:03:04 +08:00
    网络 IO 是可以分的,因为你可以有多块网卡,多条网线。
    磁盘 IO 也是可以分的,因为你可以有多块物理硬盘。
    而跟 IO 比起来,CPU 性能简直是宽裕得可以肆意挥霍了。
    所以,IO 优化理论上是存在提升空间的
    glacer
        11
    glacer  
       2018-10-15 10:06:57 +08:00
    同样是一块 CPU,为什么单线程的程序就没多线程的快?
    sjt1949
        12
    sjt1949  
       2018-10-15 10:11:42 +08:00
    @glacer 不一定,多线程可能比单线程慢。我在实际中遇到过这种情况。
    tt67wq
        13
    tt67wq  
       2018-10-15 10:14:29 +08:00
    那你咋不把软件全装在 C 盘呢。。。。反正电脑硬盘都一样大
    unix 为啥还要搞个文件系统,直接放一个目录下得了
    我国为啥要搞那么多省市,直接一个中央得了
    zjlletian
        14
    zjlletian  
       2018-10-15 10:16:54 +08:00
    @yikyo 对于索引来说根本不是问题。
    domty
        15
    domty  
       2018-10-15 10:18:14 +08:00
    因为性能瓶颈不在硬件 IO 上
    celeron533
        16
    celeron533  
       2018-10-15 10:18:39 +08:00
    我觉得是分出了不太用的冷数据和最近一直使用的热数据。
    这样的话,冷数据库基本都在打酱油,不太会占用太多的资源。热数据库由于检索集变小,性能会有一定的提升。
    pkoukk
        17
    pkoukk  
       2018-10-15 10:19:02 +08:00
    一般情况下,不是更容易碰到 CPU 瓶颈么?
    troywinter
        18
    troywinter  
       2018-10-15 10:36:47 +08:00
    但你的性能瓶颈是在查询速度,跟硬件 io 瓶颈无关,如果你已经知道瓶颈在硬件 io,那直接升级硬件不就行了
    abcbuzhiming
        19
    abcbuzhiming  
    OP
       2018-10-15 11:00:01 +08:00   1
    @yikyo 那你的意思就是说对这种做法,水平分库是有用的,但是如果是垂直分库,就没啥用了,因为垂直分库并不降低单个库的数据量
    kernel
        20
    kernel  
       2018-10-15 11:05:51 +08:00 via Android
    这个办法有用的话只能说明 MySQL 的程序员水平不行,机器的性能都榨不干
    koolob
        21
    koolob  
       2018-10-15 11:34:32 +08:00
    有可能只是为了节约当前的数据库成本,压力小时一台机器就够用。如果将来压力上来了,单台机器性能不够,直接把其中的某些库转移到另外的机器上,改个配置就可以用了。
    cstj0505
        22
    cstj0505  
       2018-10-15 11:39:36 +08:00
    @night98 数据库性能瓶颈一般首先是 io,然后内存不够缓存也会导致大量 io 的
    likuku
        23
    div class="sep3"> likuku  
       2018-10-15 12:48:50 +08:00
    当前这台机器性能耗尽了么?已经耗尽的话,两个库都在同一个机器上,对提升效能没用。
    haozes
        24
    haozes  
       2018-10-15 12:55:03 +08:00
    有时有用。你想一下,假如有个表,没有索引,如果一张表有 1KW 条记录,拆开了,如果你知道在哪个表里,本来查要遍历 1KW,现在可能只要遍历 500W 条。你以前只能遍历 1KW
    flight2006
        25
    flight2006  
       2018-10-15 17:47:18 +08:00
    @haozes 知道在哪个表就是一个索引。。人肉索引
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2521 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 63ms UTC 15:11 PVG 23:11 LAX 07:11 JFK 10:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86