既然 MySQL 可以分区,那为什么很多时候我们还是手动分表呢?

2016-06-11 17:06:12 +08:00
 tanteng

如题。

5089 次点击
所在节点    MySQL
15 条回复
realpg
2016-06-11 17:08:32 +08:00
u can try
heraldboy
2016-06-11 17:24:48 +08:00
默认喜欢自己控制局面
xinyewdz
2016-06-11 17:46:23 +08:00
我司现在用的是 mysql 的分区,省事。公司也没有人手去开发手动分表。
kslr
2016-06-11 19:38:39 +08:00
在高性能 mysql 第 7 章分区表中有分析
Sunyanzi
2016-06-11 19:52:08 +08:00
事实上在大多数应用中我会更推荐使用分区而不是分表 ... 除非大型应用我会在分区的基础上再分表 ...

具体就不展开说了 ... 太麻烦 ... 知道上面结论就行 ... 以及如果你想知道分区有什么不好的话 ... RTFM ...

https://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations.html
realpg
2016-06-12 10:23:00 +08:00
分区不包治百病
很多时候要根据逻辑去多重条件分表,以防止不合适的锁降低性能
分区只适应一些简单情况。
joshyu8
2016-06-12 10:57:43 +08:00
现在应该很少有人分表,
压力大了就直接分库
tanteng
2016-06-12 11:49:21 +08:00
@joshyu8 分库不能解决单张表大的问题啊,还是要分表
realpg
2016-06-12 11:55:20 +08:00
@tanteng
单张表大并不是什么问题
检索速度慢 以及锁才是问题


@joshyu8
无语
tanteng
2016-06-12 12:10:12 +08:00
@realpg 就是因为单张表大检索慢所以才分表啊,但为什么都是分表,而不是分区,分区不好吗,好像更方便一点啊
joshyu8
2016-06-12 13:29:34 +08:00
@tanteng 我是用 Python 的,从 django 有 2 个开源的水平扩展的库,早期有使用分表的,后面都改成了分区。而 Django 官方只提供了分库的功能,水平分库是可能解决单表过大的问题
joshyu8
2016-06-12 13:33:11 +08:00
《高性能 MySQL 》那本书里面也有提到 分表 的管理混乱问题,所以也是推荐分区。只是分区的后,要让 coder 知道分区的存在,不然查询不当会造成 扫描所有分区。
realpg
2016-06-12 17:38:47 +08:00
@tanteng
检索慢跟单张表的大小没有确定的联系。
检索条件,索引,模糊检索设计都有影响

分区只能解决有限的几种检索慢的问题

分表是完全自定义的自己掌控的,结合索引,目标检索分布,一个设计充分的分表方式能百倍的降低数据库负载
surfire91
2016-06-12 18:37:00 +08:00
分区和分表都是同一个时代的产物,原理其实也差不多。
MYSQL 分区在操作上更简便,倒是有一定局限性。 分表的灵活性大,但是操作较分区更繁琐。
wweir
2016-06-19 05:55:40 +08:00
如果你的压力瓶颈不是磁盘 IO ,那分区就没有意义。
分库分表之后可以方便的实现其它方案来解决这些压力

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

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

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

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

© 2021 V2EX