首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb索引什么时候加载到内存中?

mongodb索引什么时候加载到内存中?
EN

Stack Overflow用户
提问于 2020-05-04 12:04:57
回答 1查看 133关注 0票数 3

我正在尝试弄清楚Mongodb索引何时加载到内存中。假设我有n个集合,每个集合都有m个索引。那么当mongodb启动时,所有的n x m索引都会加载到内存中吗?

根据文档,他们提到,如果索引适合RAM,那么所有索引都会被加载。如果不是,它们中的一些将被交换到辅助存储。但是我找不到他们澄清的地方,如果在mongodb启动时,所有的索引都被加载了吗?

这一点很重要,因为它可以让我们估计出数据库最优运行所需的RAM大小。

PS:我使用的是aws-documentdb,我认为它应该具有类似的索引行为,因为它们在文档中的任何地方都没有接触到这一部分。

EN

回答 1

Stack Overflow用户

发布于 2020-05-05 07:48:15

谢谢你提出这个问题。

对于包括亚马逊DocumentDB在内的大多数数据库,索引页都是基于对数据库运行的查询而分页到内存中的(可以将其视为延迟加载)。在启动时,缓冲区缓存是空的,当您的工作负载对数据库发出查询时,缓冲区缓存将被页填满。当索引大小太大以至于无法放入内存时,数据库必须清除并从磁盘读取以迭代索引,从而能够响应查询。数据页也是如此。理想情况下,您希望实例上有足够的RAM,以便数据页和索引页都可以放入内存中。从磁盘读取会增加额外的延迟。这里要做的最好的事情是运行您的工作负载,直到它达到稳定状态,然后观察BufferCacheHitRatio,看看您的查询是否主要从缓冲区缓存获得服务,或者您是否需要从磁盘进行大量读取。有关详细信息,请参阅:https://docs.aws.amazon.com/documentdb/latest/developerguide/best

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61585002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档