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

2018-10-15 09:41:12 +08:00
 abcbuzhiming
实践中看到过这样的方案,分库来降低数据库压力,但是分开的库仍然运行在一台硬件服务器上。我仔细想了想,这样分开的库还是要受到这台硬件服务器的 I/O 性能的限制,和不分开比,似乎一点也没有增加性能啊
4091 次点击
所在节点    数据库
25 条回复
niubee1
2018-10-15 09:43:02 +08:00
没用
dorothyREN
2018-10-15 09:43:24 +08:00
可能会增加,也可能会下降,这个要看具体业务类型了
KingEngine
2018-10-15 09:43:47 +08:00
一双手干活总比一只手好吧
yikyo
2018-10-15 09:45:14 +08:00
不分库:从 1000W 条数据里面查询。
分库:从 500W 条数据里面查询。
楼主明白了吗?
yamedie
2018-10-15 09:47:03 +08:00
@yikyo 楼上说的是分表?
night98
2018-10-15 09:49:42 +08:00
这个得看机器实际性能和 cpu 核心数来分析了,如果 cpu 核心利用率不高的话,通常分库还是有点作用的。
xiaoyunwei2
2018-10-15 09:51:55 +08:00
just try
popbones
2018-10-15 09:51:59 +08:00
硬件影响的是速度,分库改善的是有些查询的时间复杂度。最简单的例子,比方说你有一个客户订单的表,查询一个客户的订单总数,需要筛选所选客户,然后数所有的条目;而如果你一个客户一个表,订单总数就等于表的大小。显然复杂度是不一样的。
opengps
2018-10-15 10:02:56 +08:00
没用,你可以在同服务器不同物理硬盘上
yulitian888
2018-10-15 10:03:04 +08:00
网络 IO 是可以分的,因为你可以有多块网卡,多条网线。
磁盘 IO 也是可以分的,因为你可以有多块物理硬盘。
而跟 IO 比起来,CPU 性能简直是宽裕得可以肆意挥霍了。
所以,IO 优化理论上是存在提升空间的
glacer
2018-10-15 10:06:57 +08:00
同样是一块 CPU,为什么单线程的程序就没多线程的快?
sjt1949
2018-10-15 10:11:42 +08:00
@glacer 不一定,多线程可能比单线程慢。我在实际中遇到过这种情况。
tt67wq
2018-10-15 10:14:29 +08:00
那你咋不把软件全装在 C 盘呢。。。。反正电脑硬盘都一样大
unix 为啥还要搞个文件系统,直接放一个目录下得了
我国为啥要搞那么多省市,直接一个中央得了
zjlletian
2018-10-15 10:16:54 +08:00
@yikyo 对于索引来说根本不是问题。
domty
2018-10-15 10:18:14 +08:00
因为性能瓶颈不在硬件 IO 上
celeron533
2018-10-15 10:18:39 +08:00
我觉得是分出了不太用的冷数据和最近一直使用的热数据。
这样的话,冷数据库基本都在打酱油,不太会占用太多的资源。热数据库由于检索集变小,性能会有一定的提升。
pkoukk
2018-10-15 10:19:02 +08:00
一般情况下,不是更容易碰到 CPU 瓶颈么?
troywinter
2018-10-15 10:36:47 +08:00
但你的性能瓶颈是在查询速度,跟硬件 io 瓶颈无关,如果你已经知道瓶颈在硬件 io,那直接升级硬件不就行了
abcbuzhiming
2018-10-15 11:00:01 +08:00
@yikyo 那你的意思就是说对这种做法,水平分库是有用的,但是如果是垂直分库,就没啥用了,因为垂直分库并不降低单个库的数据量
kernel
2018-10-15 11:05:51 +08:00
这个办法有用的话只能说明 MySQL 的程序员水平不行,机器的性能都榨不干

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

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

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

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

© 2021 V2EX