0

我有以下代码:

dbh.postings.update({"word" : word},{"$pushAll":{"postings":self.postings[word]}}, safe=True, upsert=True)  

性能对比:

插入/更新 3060 行(单词 -> 帖子)

  • 将“安全”设置为 True:3.7 秒
  • 没有“安全”设置为真:0.4s

这怎么可能?为什么设置了“安全”参数的操作这么慢?

结构:

{ "_id" : ObjectId("520d08f5c9aaeee8311e2e7c"), "postings" : [ [ 12, 1 ], [ 14, 1 ] ], "word" : "95" }

更新如下:“postings”:[ [ 12, 1 ], [ 14, 1 ] ]其中一个 [ 14, 1 ]pair 字段添加了 $pushAll

4

1 回答 1

1

是的,这是意料之中的。

安全关闭意味着它只承认与套接字的操作,然而,安全打开它实际上会做与 SQL 技术相对相同的事情,并确保操作实际上是去 MongoDb 等。

但是,至于您的更新需要这么长时间,我们无法在没有更多信息的情况下进行判断。例如,您发送到该更新语句的索引、文档结构和参数。

于 2013-08-15T17:00:47.097 回答