【问题标题】:Evaluating mongo DB performance评估 mongo DB 性能
【发布时间】:2012-05-04 13:49:41
【问题描述】:

我在 mongoDB 中有一个集合,我在该集合上设置了用户首选项。我在一个特定的集合中有大量的对象,用户可以关注集合中的一个键。例如:

colletionx { key1: value1, key2: value2 : key3: value3 .. keyn:valuen}

现在用户可以关注任意数量的键,即当 key1 等于某个值时更新我。 (非常类似于 Twitter 的“关注”功能)。

现在我怎样才能有效地做到这一点?

另外,如果我用这样的查询查询 mongo:

 db.collection.find({ keyId : 290})

db.collection.find({ keyId : { $in [ 290] } }) 在有数百万用户并且都关注1个节目的情况下会有任何显着的性能提升。

【问题讨论】:

    标签: mongodb performance mongodb-query nosql


    【解决方案1】:

    我认为在任何数据库中拥有大量数据的最大问题之一是,当您查询时,您希望避免撞到磁盘。 Mongodb 在内存中保存数据方面做得相当好,但如果您的数据集超出内存,您将开始交换,这会损害您的性能。

    只要您要查询的键上有索引,执行$eq 查询和$in 查询之间应该没有太大区别。如果没有索引,您将执行完整的集合扫描。

    【讨论】:

      【解决方案2】:

      对于大量数据,强烈建议使用Sharding 它将允许您在分片之间拆分数据,因此您的索引可以适合 ram 内存。我认为 findOne by index 应该非常有效。在这种情况下,唯一会损害您的性能的是除了您的读取操作之外的大量写入。由于 mongo 有一个全局锁。

      【讨论】:

        猜你喜欢
        • 2015-01-25
        • 1970-01-01
        • 2020-01-13
        • 1970-01-01
        • 1970-01-01
        • 2012-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多