namespace數量太多,建新的collection 會失敗


  • Lv 1

    namespace數量太多,建新的collection 會失敗

    錯誤訊息:error: hashtable namespace index max chain reached


  • 註冊用戶

    這是collection個數太多導致,在實踐中以每個collection 8KB計算(跟官方文檔裡說的不同,可能跟index有關係),256MB可以支持36000個collection。db.system.namespaces.count() 命令可以統計當前DB內的collection數目,DB可支援collection數量是由於nssize參數指定的,它指定了dbname.ns磁片檔的大小,也就指定了DB可支援的最大collection數目,ns為namespace縮寫。默認nssize為16MB。 如果重啟MongoD並修改了nssize參數,這新nssize只會對新加入的DB生效,對以前已經存在的DB不生效,如果你想對已經存在的DB採用新的nssize,必須在加大nssize重啟之後新建DB,然後把舊DB的collection 複製到新DB中。 namespace限制相關文檔:

    本帖下載内容已隐藏,请登入以查看隐藏内容!


  • 註冊用戶

    請問如果 collection 數量真的有那麼多,放到不同的 DB 會比較好嗎,還是這裡指的是所有 DB 裡的 collection 總數?


  • Lv 1

     是指同db下的狀況下的錯誤


  • Lv 1

    是mongdb官方的解释補充:

    By default MongoDB has a limit of approximately 24,000 namespaces per database. Each collection counts as a namespace, as does each index. 

    Thus if every collection had one index, we can create up to 12,000 collections. Use the --nssize parameter to set a higher limit.


  • Lv 1

    @leo

    一般應用應該不太會建立這麼多的 collection

    不過知道這個限制在某些特殊情況還是挺有用的


  • 註冊用戶

    想知道是什麼樣的使用情況會需要用到這麼多namespace?


  • Lv 1

    例如服務提供業者就有可能


  • Lv 1

    @leo

    不懂. 請詳述使用案例


  • Lv 1

    目前沒想到真正非常明確實例, 只是覺得應用上應該可能遇到此問題,  討論了解一下其先天限制


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待