Mysql 分库分表后需要跨库 join 的问题,求指教!

2020-07-03 12:39:06 +08:00
 orzxxx

我们有张用户信息表快 1000W 数据了,而且每天还在增长,所以决定进行分表。 但另外有很多 100W 不到的小表需要关联用户信息。我考虑了几个方案,希望大家给点建议。 1.把这些小表也按照相同维度分表,这样就不会跨库了,但是感觉小表没必要分,还会带来分页查询问题。 2.分两次,先把信息查出来,在进行一次 join 操作,可能要 join 多次。 3.上缓存,先把信息查出来再一个个走缓存,要考虑缓存一致的问题。 大家有更好的方案吗?

6431 次点击
所在节点    MySQL
29 条回复
gz911122
2020-07-03 13:30:59 +08:00
做个 mysql 分区得了 还简单.
1000w 也不是特别多
baoruizhe
2020-07-03 14:00:44 +08:00
对呀 1000W 不多,分库分表的前提是你的 sql 优化了,索引也加了,实在没有办法了才考虑分库分表哦,我们公司单表 3000W 了都不慌
baoruizhe
2020-07-03 14:01:57 +08:00
如果要分,可以考虑使用 shardingjdbc 分库分表中间件,感觉挺不错的 使用 mysql+es 组合,复查查询的全部走 es,最后拿到主键再去查询 mysql
DreamSpace
2020-07-03 14:12:45 +08:00
拿到代码中组装如何。
先去主表里取数据,把需要`JOIN`的`ids`去重后拿到另一张表去做`IN`查询。
whahuzhihao
2020-07-03 14:17:00 +08:00
才 1000w 不用着急分表吧
yuananf
2020-07-03 14:21:04 +08:00
直接上 tidb 算了
JasonLiHai
2020-07-03 14:23:56 +08:00
1000w 松松拉,4000w 的用户表还在用
blackshadow
2020-07-03 14:26:52 +08:00
1000w,没必要吧。 优化一下查询 sql,建立合理的索引。 实在不行,升级一下硬件。
yongjing
2020-07-03 14:26:52 +08:00
7000w 也没感觉有什么瓶颈
linxb
2020-07-03 14:37:11 +08:00
1000w 简直小菜一碟,你太看不起 mysql 了
xuanbg
2020-07-03 15:43:16 +08:00
我们系统里面用户的热数据基本都走缓存,读写用户表是极个别现象。所以哪怕上千万也就不去管它了,稍微慢点一点都不影响什么。
sagaxu
2020-07-03 15:47:53 +08:00
才 1000 万也要分表?用户表 1 亿也毫无压力。
DelayNoMay
2020-07-03 15:53:21 +08:00
才 1000 万就要分表,我有张 10 亿的表也照样飞起
phpbest
2020-07-03 15:56:36 +08:00
库内分表和分区表,有啥区别,有大佬解释一下吗
mitu9527
2020-07-03 15:58:20 +08:00
@DelayNoMay 10 亿的是动态表?还是静态表?文件大小不得有几十个 G 了。
bzj
2020-07-03 16:03:21 +08:00
根据我多年经验,事实上采用 MySQL 的项目 90%都用不到分库分表, 真正用得上的不会用 MySQL
cubecube
2020-07-03 16:30:00 +08:00
当年被 cto 一上来就分库分表,搞得想死。最后那个项目客户数不到 1w
594duck
2020-07-03 16:34:45 +08:00
@DelayNoMay 10 亿多宽,是只写不查么
srx1982
2020-07-03 16:39:57 +08:00
分个区就得了,别瞎改
caola
2020-07-03 16:47:42 +08:00
1000W 这太少了点吧,
除非你的查询都不走索引,那确实会慢……

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

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

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

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

© 2021 V2EX