찾다

 >  Q&A  >  본문

데이터베이스 - mongodb에서 점유된 메모리를 지우는 방법

최근 mongodb 사용법을 배우고 있는데, 온라인에서 검색해 보니 많은 사람들이 메모리를 지우기 위해 admin;db.runCommand({closeAllDatabases:1})를 사용하는 것으로 나타났습니다. 3.0에는 그런 명령어가 없습니다.

이 명령이 3.0에서 취소된 건가요, 아니면 여는 방법이 잘못된 건가요? 매뉴얼을 확인했는데 유사한 대체 명령을 찾지 못했는데, 최신 버전에서도 이 명령을 사용할 수 있나요? 그렇다면 어떻게 사용해야 할까요?

世界只因有你世界只因有你2798일 전989

모든 응답(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
  • 취소회신하다