MySQL 单表上亿条数据有必要考虑分表吗?目前已经 8400 万条了,感觉查询耗时也没有明显提升,就是 CPU 不查询占用也在 20%以上,不知道在干什么。如果有必要的话求推荐下 EF Core 上安全、好用的分表方法。

2022-09-25 12:53:35 +08:00
 edis0n0
6144 次点击
所在节点    数据库
38 条回复
INCerry
2022-09-26 09:45:06 +08:00
如上面所说,硬件 OK 的情况下单表上亿问题不大,后面如果数据量更大,可以考虑下面的分库分表中间件。
https://github.com/dotnetcore/sharding-core
ipwx
2022-09-26 10:02:01 +08:00
可以不动生产环境,但是可以开个模拟环境测试性能嘛。
encro
2022-09-26 10:24:47 +08:00
看你记录类型和查询方式,可以考虑冷热分离方式。
leafre
2022-09-26 11:08:11 +08:00
会导致业务逻辑复杂度增加,不轻易使用分库分表

不是达到多少数量量就一定要分库分表,主要看性能,性能不行了,没办法从其他方面优化了,万不得已可以考虑分库分表。
leafre
2022-09-26 11:10:22 +08:00
比如十亿数据表,单字段维度的过滤查询结果,查询时间 100ms 左右,根本不用考虑分表
wdwwtzy
2022-09-26 13:03:12 +08:00
听说 sqlserver 的优化更好,单表几亿几十亿都没问题?
有人确认过吗?
dcsuibian
2022-09-26 13:15:20 +08:00
没有性能问题就先别管它

我之前有一个历史数据表,里面就是时间戳+关联 id+值,主要就是查询某个时间点的状态,建了索引(没建肯定慢的要死)

测试时放了 8 亿条(或者是 4 亿条,记不清了),然后查了 1000 次,总共就花了 1 秒多,感觉够用了就没改
sadfQED2
2022-09-26 13:49:38 +08:00
我前司,一张评论表 20 亿+数量,依然正常使用,uid 查询 10ms 以内
roundgis
2022-09-26 13:57:02 +08:00
@az467 那可能是 20 年前的文章了 mysql 現在單表過億並無問題 我都試過
cubecube
2022-09-26 13:59:19 +08:00
分表没啥用,除非你单机 cpu 扛不住的时候,分库顺便分表。
leegradyllljjjj
2022-09-26 14:02:58 +08:00
现在的人都喜欢瞎坤巴折腾,我们组就有个人就喜欢看见别入弄点啥都想拿来折腾一下,完全是闲着没事儿为了折腾而折腾,到时候出点线上问题你还得为他擦屁股背锅
dog82
2022-09-26 14:35:23 +08:00
要看表里的数据怎么用,如果只是按 id 查询就不要分
nekoneko
2022-09-26 17:45:34 +08:00
分表会搞得很麻烦, 系统不大的话不如分区, 跟分表是一样的效果.
另外如果没有必要, 就不要分了
ytmsdy
2022-09-26 19:33:04 +08:00
只要能跑,用户能接受,服务不奔溃就好了。
有这闲工夫打打游戏不好么。
tramm
2022-09-27 10:50:08 +08:00
2 亿了, 加上索引, 没影响
monetto
2022-09-27 11:38:15 +08:00
我们线上库大概 10 亿级,是直接物理机部署的。2T SSD ,CPU 是啥忘记了 ... 运行一切良好。读写分离 + 单表。
xshell
2022-09-30 13:16:46 +08:00
@wdwwtzy
大表(70 多个字段)五千多万查起来就卡了,SQL 特别要注意~
还是物理机。
用过的最多不到 3 亿,单表十几亿几十亿的没遇到过,。
daoqiongsi1101
2022-10-17 13:08:39 +08:00
分库分表场景可以用腾讯云 TDSQL

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

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

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

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

© 2021 V2EX