请教一下海量数据的查询方案

2021-08-06 18:53:19 +08:00
 singerll

现在我手里的数据有以下几个特征

1 、每个表几亿行数据

2 、数据表均不是宽表,大概八九个字段

3 、基本只有查询,偶尔有 join 的需求,没有数据聚合( sum,count 等)的需求

我现在采用的方案是放到 mysql,但单表查询+where 条件,返回 10 行以内,需要 10 分钟。

目前选定了几种方案

1 、放到 es 里面,虽然速度上来了,但还是需要 10s-60s 不等

2 、放到 clickhouse,目前还没做,但我看官网介绍,ck 好像适合数据分析,不适合单条数据查询。

顺便,这不是公司系统,就是个人办公需要用到的数据,大数据组件啥的暂时上不了。各位老哥有什么好方案吗?

1016 次点击
所在节点    问与答
8 条回复
GM
2021-08-06 19:15:20 +08:00
单表几亿数据虽然挺多,但是如果做好索引,查询的时候利用好索引,不至于 10 分钟。如果查询不复杂,并且有效利用索引,可能还能秒级返回。
singerll
2021-08-06 21:17:40 +08:00
@GM 我试了就两个字段的表,加个索引还是慢。。
512357301
2021-08-06 22:09:37 +08:00
行数太多,得分表,保持一个表 200-600 万行,加索引,并且约束好要查询的范围,确定好要查询哪张表(一般对应分表方案有对应的中间件的吧),这样秒级是可以的,基本就是单机单表的标准速度了
aaniao002
2021-08-07 01:27:31 +08:00
oracle
lucifer1108
2021-08-07 17:02:01 +08:00
建议贴一下字段和查询条件,不然很难给出有效意见
singerll
2021-08-07 20:39:57 +08:00
@512357301 个人办公电脑,分库分表太麻烦了。。。
singerll
2021-08-07 20:50:25 +08:00
@lucifer1108
我是做业务方面的,不是开发人员。比如我有一个表,记录了用户在我们内部系统的编号及对应关系,我就想通过编号查询到这一行的信息。为了避免是我索引使用不当,目前我把表处理的就剩编号( 10 位数字,varchar 格式)+信息( varchar 格式,长度 20 左右)两个字段,结果加了索引还是慢。
于是我就放到 es 里面(还是这两个字段),查询时间从 10 分钟降到了 30S 左右。我知道的是有没有 5s 以内的方案。。。。
512357301
2021-08-07 23:49:00 +08:00
@singerll 你想从北京去广州,偏要骑车去,还要一天到,哪有那好事?
数据量大到一定程度就得换方案的,量变产生质变的,10 公里可以骑车,20 公里坚持一下可以骑车,1000 公里了,还要骑车,那就是自找苦吃了。
mysql 本身性能就要次于 sqlserver,更次于 hive,你这数据量又这么大(标准容量的一百倍),怎么可能不卡。。。
还有就是同样都是 ES 为什么京东的系统用起来不卡,你的卡,因为他们是集群,可以并发处理。。。

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

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

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

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

© 2021 V2EX