mongodb - 是否可以在 Mongo 中删除缓存?
问题描述
我的情况是我在 Mongo 中运行了几个查询并测量响应时间。我知道 Mongo 使用内存映射文件并将一些数据缓存在 RAM 中。
如果我创建索引并运行查询,则执行时间为 2.07 秒。当我再次运行查询时,执行时间为 0,017 秒。
这意味着文件在第一次访问时由操作系统映射到内存中,并且操作系统会将其保存在缓存中,直到它决定将其分页。
因为我想做一些基准测试,所以我想以某种方式从内存中删除映射的结果。
free -g:
total used free shared buffers cached
Mem: 29 29 0 0 0 29
-/+ buffers/cache: 0 29
Swap: 0 0 0
我尝试db.collection.getPlanCache().clear()
但它不起作用。
然后我尝试:
sudo service mongod stop
我重新启动我的机器
sync; echo 3 > /proc/sys/vm/drop_caches
sudo service mongod start
免费-g:
total used free shared buffers cached
Mem: 29 0 0 0 0 0
-/+ buffers/cache: 0 29
Swap: 0 0 0
在上面似乎缓存现在是免费的。但是当我再次执行查询时,执行时间是 0,017 秒。似乎 mongo 已经设法在某处缓存或保存数据。当我清除缓存时,所需的执行时间为 2.07 秒。
还mongostat
给出:
insert query update delete getmore command flushes mapped vsize res faults qr|qw ar|aw netIn netOut conn set repl time
*0 *0 *0 *0 0 1|0 0 124.0G 248.9G 27.7G 1 0|0 0|0 79b 11k 13 rs0 PRI 12:37:06
*0 *0 *0 *0 1 5|0 0 124.0G 248.9G 27.7G 0 0|0 0|0 687b 11k 13 rs0 PRI 12:37:07
*0 *0 *0 *0 2 1|0 0 124.0G 248.9G 27.7G 0 0|0 0|0 173b 11k 13 rs0 PRI 12:37:08
*0 *0 *0 *0 1 5|0 0 124.0G 248.9G 27.7G 0 0|0 0|0 687b 11k 13 rs0 PRI 12:37:09
*0 *0 *0 *0 0 1|0 0 124.0G 248.9G 27.7G 0 0|0 0|0 79b 11k 13 rs0 PRI 12:37:10
谁能告诉我如何才能真正删除 Mongo 中的缓存结果?
解决方案
推荐阅读
- angular - 如何在不刷新组件属性更改的整个页面的情况下更新 DOM
- android - 将带有字符串输入的 tensorflow keras 模型转换为 tf lite 模型。(手动解码 unicode 字符串张量)
- javascript - 当我们控制台 ([] +50) 或 ([] -50) 时,javascript 内部会发生什么类型转换?
- php - 调用发送函数后如何获取 Laravel 邮件响应?
- android - Fragment onCreate(), onCreateView() & onActivityCreated() 在创建父 Activity 时都调用了两次
- angular - 从组件中的 angular.json 获取 deployUrl
- html - 媒体查询在调整 chrome 大小但不能在 chrome 中切换设备响应模式时有效
- c++ - 传递右值与左值向量
- python - 通过条件值识别连续的单元格
- reactjs - 在本地存储来自 API 的 Fetch 数据