当前位置:  开发笔记 > 编程语言 > 正文

MongoDB索引/ RAM关系

如何解决《MongoDB索引/RAM关系》经验,为你挑选了2个好方法。

我即将采用MongoDB进行新项目,我选择它是为了灵活性,而不是可扩展性,因此将在一台机器上运行它.从文档和Web帖子我不断阅读所有索引都在RAM中.这对我来说没有意义,因为我的索引很容易大于可用RAM的数量.

任何人都可以分享对索引/ RAM关系的一些见解,当单个索引和我的所有索引都超过可用RAM的大小时会发生什么?



1> kristina..:

MongoDB保留了RAM中索引的功能.他们将以LRU为基础进行交换.您经常会看到一些文档,建议您将"工作集"保留在内存中:如果您实际访问的索引部分适合内存,那么您会没事的.


为了精确计算"工作集",假设我有一个集合.然后,运行`db.collection.stats()`.`filesize`或`datasize`会表示我的"工作集"吗?

2> 小智..:

它是工作集大小加上MongoDB的索引,理想情况下应始终驻留在RAM中,即可用RAM的数量理想情况下应至少为工作集大小加上索引的大小加上操作系统的其余部分(操作系统)和在同一台机器上运行的其他软件需要.如果可用的RAM小于那个,那么就会发生LRUing,因此我们可能会显着减速.要记住的一件事是,在索引btree中缓存桶,而不是单独的索引键,即如果我们在索引中包含统一的键分布(包括历史数据),我们可能需要更多的RAM中的索引有一个复合索引的时间加上别的东西.对于后者,同一btree桶中的密钥通常来自同一时代,所以这个警告不会发生.此外,我们应该记住,我们在BSON中的字段名称存储在记录中(但不是索引),所以如果我们处于内存压力下,它们应该保持简短.

那些对MongoDB当前虚拟内存使用感兴趣的人(当然也是关于RAM的)可以看看mongod的状态.

@see http://www.markus-gattol.name/ws/mongodb.html#sec7

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有