pymongo插入W = 2,J =真正的加速

时间:2015-09-18 04:45:12

标签: python mongodb

我使用的是python 2.7.8和pymongo 2.7 而mongoDB服务器是ReplicaSet组的一个主要的两个辅助服务器。 mognodb服务器构建在AWS服务器EBS上:500GB,IOPS3000。

我想知道有没有办法加快插入速度。当W = 2时,j = True 使用pymongo插入数百万个文件需要花费大量时间 我知道如果我使用W = 0它会加速,但它不安全 那有什么建议吗?请帮助我。

2 个答案:

答案 0 :(得分:0)

不推荐设置W=0。这是MongoDB的旧版本(3.0之前版本),他们不建议再使用它。

使用MongoDB作为文件存储系统也不是一个好主意;但是,如果是这种情况,您可以考虑使用GridFS

我认为你正在尝试某种大规模进口,而你现在没有很多(或任何)读者;在这种情况下,如果任何读者看到一些但不是全部的文件,你会没事的。

您有几个选择:

  • 设置j=False。 MongoDB将更快地返回(在文档提交到日志之前),如果数据库崩溃,可能会丢失文档。
  • 设置W=1。如果复制速度很慢,那么只会等到其中一个节点(主节点)在返回之前有数据。

如果你确实需要强大的一致性要求(读者看到目前为止插入的所有内容),这些选项都不会有帮助。

答案 1 :(得分:-1)

您可以使用无序或有序的bulk inserts

这加快了很多事情。也许你看看我的muBulkOps pymongo批量操作的包装。