【发布时间】:2011-10-21 11:29:26
【问题描述】:
我有一个简单的数据集,几个集合,不超过20个 MongoDB 2.0(之前是 1.8)中的每个文档。我越来越穷 查询数据时的结果(至少我认为它们可能是 更好看http://mongoid.org/performance.html)。首先, 我虽然我在 Ruby (Mongoid) 中使用的映射器是问题所在,但是 我做了更多的测试,它似乎与数据库更相关 自己。
我做了一个简单的基准测试,查询同一个文档 10000 次按其 ID,首先使用 Ruby Mongo 驱动程序,然后是 Mongoid。这 结果:
user system total real
driver 7.670000 0.380000 8.050000 ( 8.770334)
mongoid 9.180000 0.380000 9.560000 ( 10.384077)
代码在这里:https://gist.github.com/1303536 我正在测试的机器是 Core 2 Duo P8400 2.27 GHz with 4 运行 Ubuntu 11.04 的 GB RAM。 我也使用 pymongo 做了一个类似的测试来检查问题是否出在 在 Ruby 驱动程序中,但结果只是稍微好一点(5-6 s for 10000 个请求)。
我正在获取的文档的 bsonsize 是 67。它有一些小
嵌入文档,但不超过 100 个。部分嵌入
文档通过 ID 引用其他集合中的文档,但 AFAIR 这个
关系由映射器处理,所以它不应该影响
表现。使用explain() 直接在数据库中获取此文档会导致millis = 0。
奇怪的是,HDD LED 一直在闪烁 测试。 Mongo不应该将此文档缓存在RAM中吗 初读?有什么明显的我可能会丢失吗?或者这是 结果一点也不差(但与http://mongoid.org/performance.html相比 看起来很糟糕)?
【问题讨论】:
-
如果您共享所有代码会很有用。乍一看,您所做的似乎不仅仅是在循环中检索一个元组。一方面,您似乎在反复选择该集合。
-
除了这个要点我还应该分享什么代码?让我们忽略 Mongoid 测试 - 它在这里无关紧要。因此,整个代码都在要点中。我猜Python版本是一样的,以防万一我把它放在here。
-
在此期间您的 mongostat 运行中是否看到故障/秒?无论哪种方式,都有很多不同的原因导致这种情况发生。尝试用 JSON/JS 重写你的测试,这样即使不熟悉 Mongoid 的人也能帮助你。
标签: mongodb performance database