mongodb如何 清除占用的内存

新手上路,请多包涵

最近在学习使用mongodb,发现它内存占用厉害,网上搜索了一下发现很多都利用use admin;db.runCommand({closeAllDatabases:1})来清除内存,我在3.0中发现没有该命令,图片描述

是3.0中取消了该命令还是我的打开的方法不对,查看了一下手册也没有发现类似的替代命令,请问最新版本中还有该命令么?如果有的话,应该怎么使用呢?

阅读 16.4k
2 个回答

很多人觉得数据库占用内存多有问题,其实这根本不是一个问题,不需要解决。
首先,数据库的首要任务是管理数据,如何更快地提供数据查询是所有数据库需要解决的问题。而各家的解决方案几乎是一致的,无论是SQLServer,MySQL,MongoDB,无一例外地用空间换效率。通俗地讲,都是尽可能多地使用内存,把所有有用的东西(索引,数据等)尽量加载到内存以提高运行速度。所以,这绝对不是一个Bug,而是期望行为。反过来想,如果一个数据库为了节省内存而运行缓慢,这就违背一个数据库的基本宗旨了。
搞清楚了这点,再来看你的问题。

  1. 如果你这是在生产环境,那根本不用去回收内存,因为这只会让瞬间的效率变得很差。而且也起不到什么作用,因为稍后数据库又会重新从磁盘加载这些数据,造成高磁盘IO从而影响写入速度。所以最终,你只能得到暂时的空闲内存,查询速度和写入速度都会受到很大的影响。划不划算自己就能想明白了。
  2. 如果这是开发环境,不用关心这些问题,那重启mongod就能简单解决问题了。另外因为可能想进一步清除缓存中的数据,那么可以使用Linux命令:echo 3 > /proc/sys/vm/drop_caches

参考资料:
Does MongoDB require a lot of RAM?
How do you empty the buffers and cache on a Linux system?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏