正如MMAPv1 Document所说
所有记录都连续地位于磁盘上,当文档大于分配的记录时,MongoDB必须分配新记录。新分配要求MongoDB移动文档并更新引用文档的所有索引,这比原位更新花费更多时间并导致存储碎片。
在版本3.0.0中更改。
默认情况下,MongoDB使用Power of 2 Sized Allocations,以便MongoDB中的每个文档都存储在一个包含文档本身和额外空间或填充的记录中。填充允许文档在更新时增长,同时最小化重新分配的可能性。
但是WiredTiger Document对此没有任何说明。所以我只是想知道当记录大小发生变化时它是否非常好,或者它有一些性能问题,但在文档中没有提到。
答案 0 :(得分:3)
您不必担心使用WiredTiger进行文档移动,填充等。新写入最初会写入未使用区域中的文件,然后在后台与其余数据合并。 在更新期间,WiredTiger实际上会编写新版本的文档,而不是像mmapv1在许多情况下那样覆盖现有数据。 (从MongodDB免费在线课程中查看the video)