gpt4 book ai didi

performance - "nscanned"查询上的 "update"值非常高 - 似乎高于所有索引中所有条目的总和

转载 作者:可可西里 更新时间:2023-11-01 09:14:20 26 4
gpt4 key购买 nike

我在偶尔的更新查询中得到非常高的“nscanned”数字,而“nscannedObjects”相对较低。我从 mongodb 日志中获取这些数字,作为慢速查询自动记录的一部分(这些更新需要 100 毫秒到 500 毫秒之间的任何时间)。更新后的集合有 198K 个项目,大小刚刚超过 100MB。它有许多不同的字段(超过 30 个),以及这些字段及其组合的 31 个索引。

这是来自 MongoDB.log 的完整条目 - 包括查询和结果:

2014-09-22T11:55:22.507+0000 [conn45755] update mydatabase.mycollection query: { _id: ObjectId('53d1365dad547f12b0f31afe') } update: { ....} nscanned:1702130278 nscannedObjects:121 nMatched:1 nModified:1 keyUpdates:4 numYields:0 locks(micros) w:310293 310ms

当我使用 { _id: ObjectId('53d1365dad547f12b0f31afe') } 进行输入时,我希望 MongoDB 直接命中 '_id' 索引,因此 nscanned = 1

我无法提供确切的查询和收集详细信息,但这是我正在做的一个示例:

示例文档:

{"_id" : ObjectId("53d1365dad547f12b0f31afe"),
"field1" : "val1",
"field2" : "val2",
"field3" : "val3",
...
"field45" : "val45",
}

更新查询:

mycollection.update({"_id" : ObjectId("53d1365dad547f12b0f31afe")},
{"$set" : {"field1" : "new_val1",
"field2" : "new_val2",
"field3" : "new_val3",
...
"field45" : "new_val45"}})

索引存在于 mycollection 上,在“field1”、“field2”...“field31”上。

如果我进行计算,那么即使此查询将扫描 31 个索引中每个条目中的每个条目,我预计也只会得到 6,138,000 左右的“nscanned”,因此以上内容毫无意义!

我正在使用 MongoDB 2.6.4 - 这是任何一种与索引更新有关的已知错误吗?

最佳答案

这是 MongoDB 2.6.4 中的一个错误,在 2.6.5 (尚未发布) 中得到修复。 nscannednscannedObjects 变量在某些情况下未初始化,从而导致这些随机值。有关详细信息,请参阅 SERVER-15106commit to fix it .

关于performance - "nscanned"查询上的 "update"值非常高 - 似乎高于所有索引中所有条目的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25975027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com