有没有办法把 4 亿数据在四个小时内打散到 100 张表内

2019-11-25 20:26:12 +08:00
 dackh

rt... 头发快掉完了

4648 次点击
所在节点    程序员
27 条回复
opengps
2019-11-25 20:27:36 +08:00
4 亿的体积是多大
MinQ
2019-11-25 20:32:47 +08:00
spark 应该可以吧
dackh
2019-11-25 20:39:45 +08:00
@MinQ mysql
lihongjie0209
2019-11-25 20:42:15 +08:00
计算一下 io 速度不就知道了吗
mengzhuo
2019-11-25 20:42:57 +08:00
很简单啊,分而治之
先测一台实例能承接多少 qps,能不能分库。

假设数据平均的话,400M/4/100/3600 ≈ 277 qps 而已
mengzhuo
2019-11-25 20:43:47 +08:00
insert 太慢的话,可以接受的话,索引先全关掉,然后再建
dackh
2019-11-25 21:00:26 +08:00
@lihongjie0209 怎么计算?
dackh
2019-11-25 21:02:25 +08:00
@mengzhuo 我试过 insert 一分钟只能 100w,4e 的话就需要接近 10 个小时了
cedoo22
2019-11-25 21:09:35 +08:00
分库? 同时做数据同步?
dackh
2019-11-25 21:13:07 +08:00
@cedoo22 不分库,业务可以停,准备停业务数据直接打散,看来做不到了,准备放弃
lcy630409
2019-11-25 21:14:46 +08:00
如果是阿里云 可以买个临时服务器 上 essd,最高配置(配置越高 磁盘速度越高)
dusu
2019-11-25 21:37:40 +08:00
1. 关所有 log/binlog
2. batch insert
3. 多进 /线程
4. tmp 目录指 /dev/shm 目录
5. 上 ssd

插入速度取决于你的硬盘读写速度。
4e 问题不大
jugelizi
2019-11-25 21:59:43 +08:00
可以 不要用 insert 直接用 mysql 组装数据
csunny
2019-11-25 22:03:24 +08:00
bigquery
husinhu
2019-11-25 23:28:20 +08:00
load data infile
liuzhaowei55
2019-11-25 23:41:24 +08:00
方便的话可以说一下具体的场景啊,有可能并不需要一匹跑的更快的马,而是需要一部电话。
66450146
2019-11-26 01:54:22 +08:00
按照数据的类型想出一个分类手段让数据能够大致平均分成四份(例如按照 timestamp 最后两位 mod 25 ),然后创建四个 view
levelworm
2019-11-26 07:34:22 +08:00
@dackh insert 还是 copy?
fluorinedog
2019-11-26 07:37:30 +08:00
这需求闭着眼睛写啊.... sort by hash value, 然后直接 select 出来
JunoNin
2019-11-26 08:28:42 +08:00
我感觉如果是 insert 到 4 个库里。。磁盘的 io 是瓶颈

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

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

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

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

© 2021 V2EX