假如mongodb有 50万数据, 而且每条数据量还挺大,需要导到表里面.
插入多的情况,可以把表的引擎修改为 MyISAM ,多强调一句,索引一定得重视.
这个时候 初始的想法,分页查询,一条条的写,但是发现,查询一批加上每条都要写,效率好差,一天搞不完,还得加班.
稍微改进一下: 加上多线程, 查询mongodb还是单线程,不过写到 db 封装成方法,用线程池来跑.
速度是快了,不过还有一个问题: 太多线程就会占用太多数据库连接,导致环境的正常运行.
所以有没有 线程不是太多,但是 又可以 快速的方法呢?
必须的有 ------ 那就是 多线程+分页查询+批量写入
改造之后的思路就是: 还是单线程分页查询mongdb, 不过分页查询的数据不是一条一条的写入 db中了, 而是 生成 sql数组,
批量一次性插入数据库,没有太多的网络连接, 然后批量写的过程 再加上多线程的 翅膀 .
50万数据, 1个多小时就搞完.
这个还有一点 分页查询 一定需要 加上 排序字段, 不管是 mongdb 还是 mysql .
切记写 mysql 写 limit,数据量只要有几十万,就得加上 order by 字段(还得是加上索引的字段).
网友评论