0

我使用的是 Mongo 3.4 版,存储引擎是 WiredTiger。正如文档所说,Mongo 确实使用缓存来存储适合 RAM 的工作集。

所以我的问题是

  1. 有什么方法可以检查我的查询结果是否来自缓存?
  2. 如果我的工作集大于 RAM 怎么办?Mongo 会清除缓存,还是会驱逐一些数据?
  3. 任何关于学习 Mongo 缓存机制的好资源的建议
4

1 回答 1

0

WiredTiger 缓存是保留供 WiredTiger 使用的内存的通用术语。该内存包含未压缩的集合数据、索引、“脏”内容(修改过的文档)等。

要回答您的问题:

有什么方法可以检查我的查询结果是否来自缓存?

任何查询都会导致 WiredTiger 以未压缩的形式将文档从磁盘加载到其内存部分(所谓的“缓存”)中。因此,所有查询回复都来自“缓存”。

如果我的工作集大于 RAM 怎么办?Mongo 会清除缓存,还是会驱逐一些数据?

它将根据需要从缓存中逐出数据。如果需要驱逐的数据是“脏的”,则还需要将其作为驱逐过程的一部分写入磁盘。

任何关于学习 Mongo 缓存机制的好资源的建议

MongoDB 文档中有一些关于它的一般描述:

如需更深入的文档,请参阅WiredTiger 文档

于 2018-03-12T01:29:50.910 回答