【问题标题】:MongoDB - Forcefully keeping index + working set in RAMMongoDB - 强制将索引 + 工作集保存在 RAM 中
【发布时间】:2013-05-03 17:43:00
【问题描述】:

我目前正在使用 MongoDB 来存储单个数据集合。该数据大小为 50 GB,索引大约为 95 GB。我正在运行一台具有 256 GB RAM 的机器。我基本上希望将所有索引和工作集都放在 RAM 中,因为机器是专门分配给 mongo 的。

目前我看到,虽然 mongo 以 50 GB 的集合大小 + 95 GB 的索引大小运行,但机器中使用的总 RAM 小于 20 GB。

有没有办法强制 mongo 利用可用的 RAM,以便它可以将所有索引和工作集存储在内存中?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    当您的 mongod 进程启动时,它在常驻内存中没有您的数据。然后在访问数据时对其进行分页。鉴于您的收藏适合内存(这里就是这种情况),您可以在其上运行touch command。在 Linux 上,这将调用 readahead 系统调用将数据和索引拉入文件系统缓存,使它们在内存中可供 mongod 使用。在 Windows 上,mongod 将读取每个页面的第一个字节,并将其拉入内存。

    如果您的集合+索引不适合内存,则只有在触摸期间访问的数据的尾部可用。

    【讨论】:

    • 你打败了我——这正是正确的想法。这通常称为cache warming or cache reheating,是 MongoDB 管理中的重要工具。
    • 很遗憾,WiredTiger 存储引擎不支持触摸命令...您知道替代方案吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 2020-07-09
    • 2017-11-26
    • 2016-11-23
    • 2017-11-11
    相关资源
    最近更新 更多