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

2021-09-14 10:57:37 +08:00
 qq8331199
现在有两张表,一张工商表 6000 万数据,一张工商变更记录表 1.5 亿数据,工商表和变更记录表是一对多的关系,没有物理外键
需要用工商 6000 万的表同步一张新的表,
在同步的过程中需要去查变更记录表,算一些衍生数据,现在就是批量查变更记录表特别慢,
传 1 万个“公司 id”去变更记录表都查要十几分钟,“公司 id”在变更记录表已经建了索引,但是还是慢
已经尝试过分表,“公司 id”去 hash 分表 查询速度不是很明显
4189 次点击
所在节点    程序员
36 条回复
ipwx
2021-09-14 11:13:13 +08:00
加内存,用内存数据结构做。

这可能是最容易的优化方法
wzq001
2021-09-14 11:39:11 +08:00
传 1 万个“公司 id”去变更记录表都查要十几分钟
wzq001
2021-09-14 11:40:25 +08:00
??? 业务需要批量变更数据?能不能单独的变更
yidinghe
2021-09-14 11:40:51 +08:00
试下 elastic search,将计算负担分流到多个节点
saberlong
2021-09-14 12:07:20 +08:00
分片。把两张表拉下来,根据公司 id 分片,存到磁盘上。然后一个一个分片加载到内存中计算。磁盘持久化的 b+树上千万级,性能下降很厉害。
ericbize
2021-09-14 12:17:03 +08:00
不说说什么硬件么
zoharSoul
2021-09-14 12:19:34 +08:00
不说说什么硬件么
正常来说 1w 个公司 id 去查记录表应该是秒出
goobai
2021-09-14 12:51:40 +08:00
数据同步到 es,然后再查
qq8331199
2021-09-14 14:15:58 +08:00
@zoharSoul @ericbize
2t 机器硬盘+128G 内存

@goobai @yidinghe
试过了,es 不适合做单纯的查询,我对分词没要求,只是想查出表的数据

@wzq001
不是批量变更,是数据同步,需要根据查其他表,计算出衍生数据,比如新的表里面会标记出公司是否有资本增长,类似这种字段
qq8331199
2021-09-14 14:18:17 +08:00
@wzq001
全量同步 6000w 数据,不可能查 6000W 次吧
feirenK
2021-09-14 14:46:35 +08:00
hbase
feirenK
2021-09-14 14:47:12 +08:00
ck
ytmsdy
2021-09-14 14:57:51 +08:00
贴一下执行计划,这样大家可以集思广益的看一看。
zhengsidao
2021-09-14 15:01:54 +08:00
用 es 去查实际上是比较快,1.5 亿的数据量很少,term query 很快就能找到。
不过就算是用什么来存储 一万个 id 要查十几分钟,你们到底怎么存的,会这么慢
tulumu
2021-09-14 15:07:27 +08:00
可以试试实时计算行不行
1. 变更表 binlog 实时更新到 kv 存储中(redis/hbase)
2. 接入主表 binlog, flink 实时 lookup 或者 lookup 缓存 来关联变更维表(redis/hbase), do something, 产生你想要的逻辑的新表
ddkk1112
2021-09-14 15:33:37 +08:00
上 clickhouse
tiiis
2021-09-14 15:48:28 +08:00
mysql ? 看看索引有没又生效哦,我们几十亿数据 mysql 分好表做好索引也可以毫秒级别的
aragakiyuii
2021-09-14 16:04:42 +08:00
数据库,表结构,索引都是什么?
这些不知道的话挺难想思路的。。。
ericbize
2021-09-14 16:36:27 +08:00
什么数据库? mysql 的话 看看 buff pool 是多少啊, 正常 128 G 内存 如果放 两张表 都可以全部进内存了吧
hongweiliuruige
2021-09-14 16:46:19 +08:00
mysql8.0

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

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

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

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

© 2021 V2EX