如何检测我的查询结果是否从WiredTiger缓存中检索?

时间:2018-03-11 15:11:07

标签: mongodb wiredtiger

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

所以我的问题是

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

1 个答案:

答案 0 :(得分:0)

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

回答你的问题:

  

有什么方法可以检查我的查询结果是否是从缓存中提供的?

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

  

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

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

  

有关了解Mongo缓存机制的良好资源的任何建议

MongoDB文档中对它有一些一般描述:

有关更深入的文档,请参阅WiredTiger documentation