찾다

 >  Q&A  >  본문

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

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

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

世界只因有你世界只因有你2763일 전951

모든 응답(2)나는 대답할 것이다

  • PHP中文网

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

    저도 최근 mongodb를 배우고 있어요. mongodb 학습자료 http://www.hubwiz.com/course/54bdfcb188dba012b4b95c9c/

    회신하다
    0
  • 怪我咯

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

    많은 사람들이 데이터베이스가 메모리를 너무 많이 차지해서 문제가 있다고 생각합니다. 사실 이는 전혀 문제가 되지 않으며 해결할 필요도 없습니다.
    우선, 데이터베이스의 주요 업무는 데이터를 관리하는 것입니다. 데이터 쿼리를 어떻게 더 빠르게 제공할 것인가는 모든 데이터베이스가 해결해야 할 문제입니다. SQLServer, MySQL, MongoDB 등 각 회사의 솔루션은 모두 효율성을 위해 공간을 교환합니다. 일반인의 말로는, 메모리를 최대한 많이 사용하고 유용한 것(인덱스, 데이터 등)을 모두 메모리에 최대한 로드하여 실행 속도를 향상시키는 것입니다. 따라서 이는 확실히 버그가 아니라 예상되는 동작입니다. 반대로 생각해보면, 메모리를 절약하기 위해 데이터베이스가 느리게 실행된다면 이는 데이터베이스의 기본 목적에 위배되는 것입니다.
    이것을 이해했다면, 질문을 살펴보겠습니다.

    1. 프로덕션 환경에서는 메모리를 회수할 필요가 전혀 없습니다. 왜냐하면 순간적인 효율성을 매우 저하시킬 뿐이기 때문입니다. 그리고 데이터베이스가 나중에 디스크에서 데이터를 다시 로드하여 디스크 IO가 높아지고 쓰기 속도에 영향을 주기 때문에 작동하지 않습니다. 그래서 결국 임시 여유 메모리만 얻게 되고, 쿼리 속도와 쓰기 속도에 큰 영향을 미치게 됩니다. 좋은 거래인지 아닌지 스스로 알아낼 수 있습니다.
    2. 이것이 개발 환경이고 이러한 문제에 대해 걱정할 필요가 없다면 mongod를 다시 시작하면 문제를 쉽게 해결할 수 있습니다. 또한 캐시의 데이터를 추가로 지우고 싶을 수도 있으므로 다음 Linux 명령을 사용할 수 있습니다. echo 3 > /proc/sys/vm/drop_caches

    참고:
    MongoDB에는 많은 RAM이 필요합니까?
    Linux 시스템에서 버퍼와 캐시를 어떻게 비우나요?

    회신하다
    0
  • 취소회신하다