suchen

Heim  >  Fragen und Antworten  >  Hauptteil

数据库 - mongodb如何 清除占用的内存

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

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

世界只因有你世界只因有你2797 Tage vor984

Antworte allen(2)Ich werde antworten

  • PHP中文网

    PHP中文网2017-04-26 09:03:54

    最近也在学习mongodb,推荐你个mongodb学习资料http://www.hubwiz.com/course/54bdfcb188dba012b4b95c9c/

    Antwort
    0
  • 怪我咯

    怪我咯2017-04-26 09:03:54

    很多人觉得数据库占用内存多有问题,其实这根本不是一个问题,不需要解决。
    首先,数据库的首要任务是管理数据,如何更快地提供数据查询是所有数据库需要解决的问题。而各家的解决方案几乎是一致的,无论是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?

    Antwort
    0
  • StornierenAntwort