1

我有一个在写入时使用扇出的提要系统。我在redis排序集中保留了一个feed id列表,并将feed内容保存在mongodb中,所以每次阅读30个feed时,我必须对mongodb进行30次查询,有没有改进的地方?

4

1 回答 1

1

它取决于您的数据库设置。MongoDb 有大量关于如何增加同时读写MongoDb 并发的文档

  1. 如果您需要在数据库中以更少的延迟进行大量写入,请开始使用分片部署分片。

  2. 如果您需要增加数据库中的读取次数,请将每个分片部署为副本集并在辅助节点读取首选项中路由您的读取查询

  3. 此外,每个查询都应该被索引覆盖更好的索引,您可以通过简单地在查找后添加解释来检查您的查询时间,它将向您显示时间和所有事实

    db.collection.find({a:"abcd"}).explain()
    
  4. 确保您有足够的内存,以便您的数据集适合内存,至少您的索引应该适合内存,因为每次从磁盘获取的数据比内存慢 10 倍。

  5. 通过运行MongoStat检查您的服务器状态,它将测量您的数据库性能、页面错误、锁定、查询操作的许多细节。

  6. 还可以使用 iostat 等程序测量您的硬件性能,并确保 io wait 较低且小于 1%。

  7. 很少有关于部署 mongodb 和性能调优的好链接。

    、mongodb的生产部署

    2. 10gen对mongodb的性能调优

    3.在mongodb之前使用redis缓存查询和结果对象

    4.redis和mongo示例

于 2013-07-27T15:32:40.737 回答