abcbuzhiming
V2EX  ›  数据库

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

  •  1
     
  •   abcbuzhiming · Oct 15, 2018 · 5292 views
    This topic created in 2944 days ago, the information mentioned may be changed or developed.
    实践中看到过这样的方案,分库来降低数据库压力,但是分开的库仍然运行在一台硬件服务器上。我仔细想了想,这样分开的库还是要受到这台硬件服务器的 I/O 性能的限制,和不分开比,似乎一点也没有增加性能啊
    25 replies  •  2018-10-15 17:47:18 +08:00
    niubee1
    niubee1
    Oct 15, 2018
    1
    没用
    dorothyREN
    dorothyREN
    Oct 15, 2018
    2
    可能会增加,也可能会下降,这个要看具体业务类型了
    KingEngine
    KingEngine
    Oct 15, 2018
    3
    一双手干活总比一只手好吧
    yikyo
    yikyo
    Oct 15, 2018
    4
    不分库:从 1000W 条数据里面查询。
    分库:从 500W 条数据里面查询。
    楼主明白了吗?
    yamedie
    yamedie
    Oct 15, 2018
    5
    @yikyo 楼上说的是分表?
    night98
    night98
    Oct 15, 2018
    6
    这个得看机器实际性能和 cpu 核心数来分析了,如果 cpu 核心利用率不高的话,通常分库还是有点作用的。
    xiaoyunwei2
    xiaoyunwei2
    Oct 15, 2018
    7
    just try
    popbones
    popbones
    Oct 15, 2018
    8
    硬件影响的是速度,分库改善的是有些查询的时间复杂度。最简单的例子,比方说你有一个客户订单的表,查询一个客户的订单总数,需要筛选所选客户,然后数所有的条目;而如果你一个客户一个表,订单总数就等于表的大小。显然复杂度是不一样的。
    opengps
    opengps
    Oct 15, 2018 via Android
    9
    没用,你可以在同服务器不同物理硬盘上
    yulitian888
    yulitian888
    Oct 15, 2018
    10
    网络 IO 是可以分的,因为你可以有多块网卡,多条网线。
    磁盘 IO 也是可以分的,因为你可以有多块物理硬盘。
    而跟 IO 比起来,CPU 性能简直是宽裕得可以肆意挥霍了。
    所以,IO 优化理论上是存在提升空间的
    glacer
    glacer
    Oct 15, 2018
    11
    同样是一块 CPU,为什么单线程的程序就没多线程的快?
    sjt1949
    sjt1949
    Oct 15, 2018
    12
    @glacer 不一定,多线程可能比单线程慢。我在实际中遇到过这种情况。
    tt67wq
    tt67wq
    Oct 15, 2018
    13
    那你咋不把软件全装在 C 盘呢。。。。反正电脑硬盘都一样大
    unix 为啥还要搞个文件系统,直接放一个目录下得了
    我国为啥要搞那么多省市,直接一个中央得了
    zjlletian
    zjlletian
    Oct 15, 2018
    14
    @yikyo 对于索引来说根本不是问题。
    domty
    domty
    Oct 15, 2018
    15
    因为性能瓶颈不在硬件 IO 上
    celeron533
    celeron533
    Oct 15, 2018
    16
    我觉得是分出了不太用的冷数据和最近一直使用的热数据。
    这样的话,冷数据库基本都在打酱油,不太会占用太多的资源。热数据库由于检索集变小,性能会有一定的提升。
    pkoukk
    pkoukk
    Oct 15, 2018
    17
    一般情况下,不是更容易碰到 CPU 瓶颈么?
    troywinter
    troywinter
    Oct 15, 2018
    18
    但你的性能瓶颈是在查询速度,跟硬件 io 瓶颈无关,如果你已经知道瓶颈在硬件 io,那直接升级硬件不就行了
    abcbuzhiming
    abcbuzhiming
    OP
    Oct 15, 2018❤️1
    19
    @yikyo 那你的意思就是说对这种做法,水平分库是有用的,但是如果是垂直分库,就没啥用了,因为垂直分库并不降低单个库的数据量
    kernel
    kernel
    Oct 15, 2018 via Android
    20
    这个办法有用的话只能说明 MySQL 的程序员水平不行,机器的性能都榨不干
    koolob
    koolob
    Oct 15, 2018
    21
    有可能只是为了节约当前的数据库成本,压力小时一台机器就够用。如果将来压力上来了,单台机器性能不够,直接把其中的某些库转移到另外的机器上,改个配置就可以用了。
    cstj0505
    cstj0505
    Oct 15, 2018
    22
    @night98 数据库性能瓶颈一般首先是 io,然后内存不够缓存也会导致大量 io 的
    likuku
    likuku
    Oct 15, 2018
    23
    当前这台机器性能耗尽了么?已经耗尽的话,两个库都在同一个机器上,对提升效能没用。
    haozes
    haozes
    Oct 15, 2018
    24
    有时有用。你想一下,假如有个表,没有索引,如果一张表有 1KW 条记录,拆开了,如果你知道在哪个表里,本来查要遍历 1KW,现在可能只要遍历 500W 条。你以前只能遍历 1KW
    flight2006
    flight2006
    Oct 15, 2018
    25
    @haozes 知道在哪个表就是一个索引。。人肉索引
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4884 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 08:55 · PVG 16:55 · LAX 00:55 · JFK 03:55
    ♥ Do have faith in what you're doing.