Python Pymongo明显比mongo shell慢?
我对mongodb比较陌生,在pymongo中有一个性能问题。我有一个50 GBs(未压缩)20 GBs(通过WiredTiger压缩)的集合,包含大约3900万个文档。在索引字段上查询它会得到大约125000个文档和150Mbs未压缩的结果。当我在mongo shell中执行以下操作时,大约需要一秒钟Python Pymongo明显比mongo shell慢?,python,mongodb,shell,pymongo,Python,Mongodb,Shell,Pymongo,我对mongodb比较陌生,在pymongo中有一个性能问题。我有一个50 GBs(未压缩)20 GBs(通过WiredTiger压缩)的集合,包含大约3900万个文档。在索引字段上查询它会得到大约125000个文档和150Mbs未压缩的结果。当我在mongo shell中执行以下操作时,大约需要一秒钟 var result = db.my_collection.find(my_query).toArray() 然而,当我在pymongo做同样的事情时,需要7秒以上 db = pymongo.
var result = db.my_collection.find(my_query).toArray()
然而,当我在pymongo做同样的事情时,需要7秒以上
db = pymongo.MongoClient()['my_db']
result = list(db['my_collection'].find(my_query))
一些额外信息:
- 我使用的是Ubuntu 14.04、python 2.7.6、pymongo 3.2和mongo 3.2
- 我认为我的pymongo被配置为使用C,因为我安装了python dev,并且pymongo.has_C()和bson.has_C()都显示为True
- 一切都在本地运行
我发现很难相信pymongo比mongo外壳慢7倍。我遗漏了什么?尝试使用探查器运行它,并检查时间是否花在python客户端。另外,您可能想查看Monary:可能是python utf8字符串解码()“速度快了八倍”->,直到他调用python的utf8解码器。@Brandt,您最终解决了问题吗?我在蒙哥希尔和皮蒙戈之间面临着更糟糕的速度惩罚。@clocker我从来没有真正弄清这件事的真相。相反,由于花费的时间似乎主要是将mongo文档转换为Python对象,因此我采用了“只从mongo中获取您绝对需要的内容”的思路/准则。在将结果数据返回Python之前,我更加强调使用管道,并在mongo中尽可能多地进行过滤和处理。希望这至少有点帮助!