gpt4 book ai didi

aws-documentdb - mongodb索引什么时候加载到内存中?

转载 作者:行者123 更新时间:2023-12-04 15:29:16 26 4
gpt4 key购买 nike

我想弄清楚何时将 Mongodb 索引加载到内存中。假设我有 n 个集合,每个集合都有 m 个索引。那么mongodb启动的时候,会不会把所有n x m的索引都加载到内存中呢?

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

这很重要,因为它可以让我们估计需要多少 RAM 才能使数据库以最佳方式运行。

PS:我正在使用 aws-documentdb,我认为它应该对索引有类似的行为,因为它们也没有在他们的文档中的任何地方触及这部分。

最佳答案

谢谢你提出这个问题。

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

关于aws-documentdb - mongodb索引什么时候加载到内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61585002/

26 4 0
文章推荐: json - 在 Flutter 中将 Json 数组转换为 List