搜尋

首頁  >  問答  >  主體

資料庫 - mongodb如何 清除佔用的內存

最近在學習使用mongodb,發現它內存佔用厲害,網上搜索了一下發現很多都利用use admin;db.runCommand({closeAllDatabases:1})來清除內存,我在3.0中發現沒有該命令,

是3.0中取消了該命令還是我的打開的方法不對,查看了一下手冊也沒有發現類似的替代命令,請問最新版本中還有該命令麼?如果有的話,該怎麼使用呢?

世界只因有你世界只因有你2797 天前985

全部回覆(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,無一例外地用空間換效率。通俗地講,都是盡可能多地使用內存,把所有有用的東西(索引,數據等)盡量加載到內存以提高運行速度。所以,這絕對不是一個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?

    回覆
    0
  • 取消回覆