海量数据清洗方案

李怀宇 2017-08-03 12:32:32
在京东金融面试中有个面试官提了一个问题,在一个表中有亿级数据下进行数据清洗,从表中读取数据,使用程序按照规则进行计算,修改其中一个状态字段值,然后再插入到另外一个表中。

这两天上网各种看海量数据解决方案也没看出过所以然,求大神指导。

目前想到的办法是,先去索引,关闭日志,横向切表,切成10个表,每表1000万,用多线程处理,每个线程1000万。再以多线程插入,每处理100万交由一个线程去插入,每批量sql执行达到10万则提交一次。

不知道这样可不可行啊。经测试。macbook Pro顶配,纯插入1000万条到mysql用时不到1分钟。2000万4分钟,如果开嵌套循环线程应该会更快,由于硬盘空间不多就没有尝试更多数据插入。

只是想到了程序层面的解决方案,存储层面比较薄弱。。。求大神围观指导。。还有百亿级的数据清洗、迁移、优化等等。。
...全文
1426 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
AHUA1001 2019-08-21
  • 打赏
  • 举报
回复
并行插入,不会锁表。 楼主说的已经比较全面了,还有就是不同的服务器,配置不同,磁盘读写能力也不同,要根据磁盘读写能力,增加或者减少进程数。根据内存的大小,调整提交频率。如果是要远程写入数据,还要考虑网络传输能力的问题。
tianfang 2017-08-11
  • 打赏
  • 举报
回复
并行插入会引起锁表,没有提高效率。 插入数据通过队列机制改为串行化

8,028

社区成员

发帖
与我相关
我的任务
社区描述
高性能数据库开发
社区管理员
  • 高性能数据库开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧