【问题标题】:Mongodb - make inmemory or use cacheMongodb - 制作内存或使用缓存
【发布时间】:2015-05-25 23:05:11
【问题描述】:

我将创建一个 5 节点的 mongodb 集群。它将比写入更重,并且有一个问题是哪种设计会带来更好的性能。这些节点将专用于 mongodb。举个例子,假设每个节点都有 64GB 的内存。

从 mongodb 文档中可以看出:

MongoDB 自动使用机器上的所有空闲内存作为其缓存

这是否意味着只要我的数据小于可用的内存,它就会像拥有一个内存数据库?

我还读到可以纯粹在内存中实现 mongodb

http://edgystuff.tumblr.com/post/49304254688/how-to-use-mongodb-as-a-pure-in-memory-db-redis

如果我的数据是相当动态的(每隔几个小时可以从 50gb 到 75gb 不等),理论上设计 mongodb 以允许 mongodb 使用其缓存管理自身的方式会更好(mongo 的默认设置),或者最初将 mongodb 放入内存中,如果数据增长超过 ram 使用交换空间 (SSD) 的大小?

【问题讨论】:

    标签: performance mongodb caching memory


    【解决方案1】:

    MongoDB 默认存储引擎映射内存中的文件。它提供了一种访问数据的有效方式,同时避免了双重缓存(即 MongoDB 缓存实际上是操作系统的页面缓存)。

    这是否意味着只要我的数据小于可用内存,它就会像拥有一个内存数据库?

    对于阅读流量,是的。对于写入流量,情况有所不同,因为 MongoDB 可能必须对写入操作进行日志记录(取决于配置),并维护 oplog。

    仅从内存运行 MongoDB 是否更好(利用 tmpfs)?

    对于阅读流量,应该不会更好。将文件放在 tmpfs 上也可以避免双重缓存(这很好),但数据仍然可以被分页。一旦数据被分页,使用常规文件系统将同样快。

    对于写流量,如果journal和oplog也放在tmpfs上,速度会更快。请注意,在这种情况下,系统崩溃将导致全部数据丢失。通常,性能提升不值得冒险。

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 1970-01-01
      • 2012-12-23
      • 2010-09-26
      • 2011-02-20
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多