mongodb 查询跟插入百万级数据速度很慢是什么原因呢?是不是跟系统性能有关呢?

2017-07-31 13:58:26 +08:00
 oyosc
服务器配置:2 Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz,内存 8g
程序是单进程执行的,一次性查询出来数百万数据要一个半小时,插入数百万数据一个小时左右,集合里字段为 32 个,步骤是首先从远程服务器上循环迭代器获取数据,中间进行计算,再通过 insertmany 来进行插入。想问下速度这么慢是有哪些因素呢?怎么才能加快速度
5054 次点击
所在节点    MongoDB
6 条回复
Presageee
2017-07-31 14:22:40 +08:00
看下系统的负载吧,估计是内存不足
wujiangcheng
2017-07-31 14:38:24 +08:00
看引擎, mmapv1 性能是比较慢的. 并且锁是粒度是比较大, 是集合级别. 相当于并发为 1( 有误请指正)
建议使用 wiredtiger, 锁是文档级的.

其它优化
* 换成 SSD 磁盘
* 关掉 journal(或者从数据盘挪走)
* 走单实例, 不走集群
wujiangcheng
2017-07-31 14:40:00 +08:00
还有一点, 索引过多也会影响插入速度. 最好在插入数据前, 清理一下索引, 最好只保留默认和必要的.
oyosc
2017-07-31 15:52:08 +08:00
@wujiangcheng 没有设置索引的,是不是跟网速也有关系呢?
wujiangcheng
2017-07-31 22:16:01 +08:00
@oyosc 这就需要看下系统状态, 是不是遇到资源瓶颈了
fiht
2017-07-31 22:20:13 +08:00
那啥 如果你用的是 insert_one 的话可以多存几个然后 insert_many
我的爬虫这么一搞之后效率提高不少

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

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

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

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

© 2021 V2EX