Mongo 查询性能
Mongo Query Performance
与 MongoChef 一起玩时,我发现随着时间和集合中文档数量的增加,查询变得越来越慢。
例如:我在去年 11 月启动了一个应用程序,从那时起我将数据保存到同一个集合中的 mongo 数据库中,没有过期日期。
现在我执行这个查询:
{ "mongoTime": { $gte: "2015-09-01T15:46:51+0200" }, $and: [ { "mongoTime": { $lt: "2015-11-01T15:46:51+0200" } } ] }
它在 2 个月 时间段内在 0.178 秒内检索 239 691 份文件。
但是:
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
正在检索 199 909 篇文档,时间为 6.391 秒,持续 3 天。
区别:第一个查询获取第一个插入 Mongo 的所有文档,第二个查询获取从过去 3 天到现在的所有文档。
当然,该集合已经有数百万个文档,我想阅读一些有关如何处理此问题的建议。我考虑过使用索引:像这样的东西:
db.clicks.createIndex( { "mongoTime": 1 } )
或
db.clicks.createIndex( { "mongoTime": -1 } )
但更新此集合的索引需要一段时间,最好在出错前询问,索引也会影响写入性能。
提前致谢。
阅读正确答案并应用索引后:
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
正在检索 199 909 篇文档,时间为 0.194 秒,持续 3 天。
大进步。谢谢...
与 MongoChef 一起玩时,我发现随着时间和集合中文档数量的增加,查询变得越来越慢。 例如:我在去年 11 月启动了一个应用程序,从那时起我将数据保存到同一个集合中的 mongo 数据库中,没有过期日期。
现在我执行这个查询:
{ "mongoTime": { $gte: "2015-09-01T15:46:51+0200" }, $and: [ { "mongoTime": { $lt: "2015-11-01T15:46:51+0200" } } ] }
它在 2 个月 时间段内在 0.178 秒内检索 239 691 份文件。
但是:
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
正在检索 199 909 篇文档,时间为 6.391 秒,持续 3 天。
区别:第一个查询获取第一个插入 Mongo 的所有文档,第二个查询获取从过去 3 天到现在的所有文档。
当然,该集合已经有数百万个文档,我想阅读一些有关如何处理此问题的建议。我考虑过使用索引:像这样的东西:
db.clicks.createIndex( { "mongoTime": 1 } )
或
db.clicks.createIndex( { "mongoTime": -1 } )
但更新此集合的索引需要一段时间,最好在出错前询问,索引也会影响写入性能。
提前致谢。
阅读正确答案并应用索引后:
{ "mongoTime": { $gte: "2016-01-27T00:00:00+0000" }, $and: [ { "mongoTime": { $lt: "2016-01-29T11:38:42+0000" } } ] }
正在检索 199 909 篇文档,时间为 0.194 秒,持续 3 天。
大进步。谢谢...