2013-06-03 55 views
0

我在我的项目中使用了mongodb来缩短时间,比较从SQL和NoSQL中获取数据所用的时间,SQL对于每个获取表单数据库只需要50ms,而对于NoSQL第一次需要约180ms,其他读取需要15ms,如何在NoSQL中第一次减少读取时间。MongoDB--花费更多时间进行第一次读取比SQL

+0

你能告诉我们更多关于数据量,文档数量和查询(你如何获取文档)? –

+0

你需要告诉我们什么查询您正在运行,如果你希望我们告诉你如何加速起来...... – Sammaye

+0

@amit_saxena我收藏有108条记录。我使用下面的查询来获取记录。 'IMongoQuery query = new QueryDocument(); query = Query.And(query,Query.EQ(“Field1”,1)); MongoCollection collectionAC = MongoDBs.GetCollection (“CollectionName”); var Log = collectionAC.FindAs (query).SetFields(Fields.Exclude(dyFields))。ToList();' – siva

回答

0

尝试创建一个索引您的收藏进行查询运行得更快
​​

+0

@Gavruk我已经给索引与独特:已经。我的查询只需要第一次抓取时间。 – siva

+0

也许你的数据没有加载到内存中。第一个查询后,MongoDB的加载数据到内存和明年查询成为提高工作效率 –

0

第一个查询可能花更多的时间,因为它加载的工作集到您的RAM。有关工作组的详细信息可以在这里找到:

http://docs.mongodb.org/manual/faq/storage/#what-is-the-working-set

为了避免这个问题,你可能要预先加载在此之前任何实际的用户访问数据库。我能想到的一种方法是每小时(或任何你觉得合适的频率)的cron,它每小时执行一次查询以将工作集加载到内存中,以便更快地进行后续查询。

+0

嗨@amit,我是否需要添加任何配置设置在我的配置文件,'DBPATH,日志路径和logappend'这是现在给出的设置在我的配置中。我需要做的是让我的db将其工作集加载到RAM中。 – siva

+0

正如我所说的,你可以有一个周期性的cronjob来触发类似的查询并将工作集加载到RAM中。 –

+0

嗨@amit,正如你所说的我做了在另一个页面加载相同的查询(即,鉴于page_1.aspx相同的查询),即使选择了我的网页(即CURRENT_PAGE的.aspx)需要更多的时间进行第一次作为它在page_1.aspx中完成。什么可能是问题,请指导我继续时间是我的标准。 – siva

相关问题