关于大数据(千万级,亿级)的查询问题

2021-09-14 10:57:37 +08:00
 qq8331199
现在有两张表,一张工商表 6000 万数据,一张工商变更记录表 1.5 亿数据,工商表和变更记录表是一对多的关系,没有物理外键
需要用工商 6000 万的表同步一张新的表,
在同步的过程中需要去查变更记录表,算一些衍生数据,现在就是批量查变更记录表特别慢,
传 1 万个“公司 id”去变更记录表都查要十几分钟,“公司 id”在变更记录表已经建了索引,但是还是慢
已经尝试过分表,“公司 id”去 hash 分表 查询速度不是很明显
4208 次点击
所在节点    程序员
36 条回复
abccccabc
2021-09-14 17:00:31 +08:00
同步一张新的表需要实时吗?不需要的话,走计划任务呗
qq8331199
2021-09-14 17:19:09 +08:00
@tiiis
索引生效的
@ericbize
mysql 5.7
@abccccabc
就是离线同步太慢了 单纯的查询 1W id 放到 1.5 亿的表查询 需要 2 分钟
@ddkk1112
这个应用场景不太使用,我需要的是所有列的数据
qq8331199
2021-09-14 17:19:52 +08:00
@zhengsidao
说错了 1W id 我测试的时候应该有人操作数据库,后面再测了一次 只用 2 分钟,但是还是慢
abccccabc
2021-09-14 17:26:51 +08:00
@qq8331199 有没有计算一下,处理 100 条数据需要花费多长时间?然后每隔 10 秒处理一次数据。走计划任务

不过这数据量不算小,再怎么跑数据也要个把小时。
qq8331199
2021-09-14 17:26:52 +08:00
@zhengsidao
es 也不太行,1.5 亿的数据是全部需要查的,其实我还要 3 张过亿的表需要查,之前试过全部放 es,一起查这 4 张表,速度并没有很快,还很容易超时
qq8331199
2021-09-14 17:28:15 +08:00
@abccccabc
我有 6000W 数据要跑,不是 1w,1w 是我一个批次的量
qq8331199
2021-09-14 17:31:32 +08:00
@tiiis 我不是单独的查一个主键的记录,我这个是一次去另一张表查一批主键的记录
tiiis
2021-09-14 17:41:06 +08:00
@qq8331199 #27 那你这还不如直接来个 join,怕影响数据库就写个 spark 程序来处理吧
aragakiyuii
2021-09-14 18:54:08 +08:00
1.5 亿表里就算索引生效,读的 block 也太多了
看看这个
https://dev.mysql.com/doc/refman/8.0/en/range-optimization.html#equality-range-optimization
aragakiyuii
2021-09-14 19:01:29 +08:00
再给点信息吧😂字段类型,字段索引,索引类型,还有 explain 的结果
aragakiyuii
2021-09-14 19:03:16 +08:00
或者不如找个内存大的服务器读到内存里去处理
ericbize
2021-09-14 20:29:40 +08:00
@qq8331199 先看看是不是 table per file, 如果是的话 你可以试试整理一下? (可能有卡死的风险)你看看是不是 innodb, 不过建议先让 dba 能不能处理一下先
aru
2021-09-14 20:47:30 +08:00
上 greenplum 吧,只要你的硬盘性能跟得上,上尽量多的 segment,非常快
qq8331199
2021-09-15 10:08:42 +08:00
@aragakiyuii
company_id 普通索引 varchar 类型,上面已经说了,explain 显示是走索引的,
你有试过 1.5 亿里面查 1W 数据要多久吗?不是走主键索引,走普通索引
qq8331199
2021-09-15 10:11:34 +08:00
@tulumu
我要的是查另一张表的数据,和主表没上面关系,瓶颈在全量同步,因为全量同步的时候查 1.5 亿的表慢,现在想解决的是查询慢的问题
MonkeyJon
2021-09-15 15:20:06 +08:00
@qq8331199
1.分批次同步,一次几千,尝试出最高效率的同步数,也就是 1.5 亿那张表的查询最快的数量
2.多线程,分页,

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

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

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

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

© 2021 V2EX