简体   繁体   中英

MongoDB poor read performance

I have a simple data set, a few collections, not more than 20 documents in each, in MongoDB 2.0 (previously 1.8). I'm getting poor results when it comes to querying data (at least I think they could be much better looking at http://mongoid.org/performance.html ). At first, I though that the mapper I use in Ruby (Mongoid) was the problem, but I made some more tests and it seems more related to the database itself.

I've made a simple benchmark where I query the same document 10000 times by its ID, first using the Ruby Mongo driver, then Mongoid. The results:

              user     system      total        real
driver    7.670000   0.380000   8.050000 (  8.770334)
mongoid   9.180000   0.380000   9.560000 ( 10.384077)

The code is here: https://gist.github.com/1303536 The machine I'm testing this on is a Core 2 Duo P8400 2.27 GHz with 4 GB of RAM running Ubuntu 11.04. I also made a similar test using pymongo to check if the problem lies in the Ruby driver, but the result was only slightly better (5-6 s for 10000 requests).

The bsonsize of the document I'm fetching is 67. It has some small embedded documents, but not more than 100. Some of the embedded documents refer documents from other collections by ID, but AFAIR this relationship is handled by the mapper, so it shouldn't influence the performance. Fetching this document directly in the database with explain() results in millis = 0.

The odd thing is that the HDD LED keeps blinking all the time during the tests. Shouldn't this document be cached in RAM by Mongo after first read? Is there something obvious I could be missing? Or is this not a poor result at all (but comparing with http://mongoid.org/performance.html it does seem bad)?

I dropped and recreated the database. Maybe it was because of going from 1.8 to 2.0. Anyway, the HDD led stopped blinking and everything is now 2-3x times faster.

I also looked carefully at the test that was used to benchmark Mongoid and this result (0.001s) is just for one find(), not a million. I told the Mongoid's author that I think it's not stated clearly on the web site that the number of operations applies only to some of them.

Sorry for the confusion.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM