2017-01-10 26 views
0

我正在閱讀「MongoDB,權威指南,第二版」,作者指出:「截至撰寫本文時,MongoDB並不擅長重複使用空白空間,因此將文檔 移動很多可能會導致大的條空數據文件...如果您的模式需要大量移動或通過插入和刪除操作大量流失,您可以通過使用usePowerOf2Sizes選項來提高磁盤重用。「MongoDB是否改進了重用空閒空間的算法?

這本書是在MongoDB是2.4版本,而今天是3.4版本的時候編寫的。在經歷了一次重大版本更新之後,我很好奇Mongo是否已經對使用usePowerOf2Sizes選項的地方仍然需要進行修改?

回答

0

那麼,MongoDB已經包含了一個新的存儲引擎WiredTiger,這是一個很大的改進,並不像以前的MMapV1那樣存儲數據,用於存儲預定義大小的地方,當大小增加時,它應用兩倍的大小, ArrayList在Java中工作。

但是MongoDB確實提供了一個compact命令來回收空白空間,類似於內存碎片整理。在使用MMapV1時收集數百萬個文檔非常有用。