需要把一个库中的数据用脚本转化一下 写入到一些新的库中 大概有100w条
如果用for实在太慢了 看了一圈 如果要用多线程 都没有特别好的最佳实践
一般业内是怎么处理呢 ?
目前用的是最笨的办法:
i = coll.find({}):
for j in i:
parse(j)
new_coll.insert(parse(j))
其中主要的发现和瓶颈:
1、find那一步 是直接获取一个指针,但是100w的数据量 ,如果不加batch_size 会卡住。我现在设置batch为10,可以稳定提取,但是速度不够快
2、insert那一步,速度由find决定。显然如果用多线程会好一点。但是这个多线程是否会受find制约?
你现在的瓶颈是在写 MongoDB 上、还是你前面那个所谓的“转化”上?
如果是前者,MongoDB 本身是支持
bulkWrite
操作的;如果是后者,具体问题具体分析,信息太少猜不出来。