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