V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
oyosc
V2EX  ›  MongoDB

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

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

    其它优化
    * 换成 SSD 磁盘
    * 关掉 journal(或者从数据盘挪走)
    * 走单实例, 不走集群
    wujiangcheng
        3
    wujiangcheng  
       2017-07-31 14:40:00 +08:00
    还有一点, 索引过多也会影响插入速度. 最好在插入数据前, 清理一下索引, 最好只保留默认和必要的.
    oyosc
        4
    oyosc  
    OP
       2017-07-31 15:52:08 +08:00
    @wujiangcheng 没有设置索引的,是不是跟网速也有关系呢?
    wujiangcheng
        5
    wujiangcheng  
       2017-07-31 22:16:01 +08:00
    @oyosc 这就需要看下系统状态, 是不是遇到资源瓶颈了
    fiht
        6
    fiht  
       2017-07-31 22:20:13 +08:00
    那啥 如果你用的是 insert_one 的话可以多存几个然后 insert_many
    我的爬虫这么一搞之后效率提高不少
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:04 · PVG 22:04 · LAX 06:04 · JFK 09:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.