1

正如MMAPv1 文档所说

所有记录都连续位于磁盘上,当文档大于分配的记录时,MongoDB 必须分配一条新记录。新分配要求 MongoDB 移动文档并更新引用该文档的所有索引,这比就地更新花费更多时间并导致存储碎片。在 3.0.0 版中更改。
默认情况下,MongoDB 使用 2 大小分配的幂,因此 MongoDB 中的每个文档都存储在包含文档本身和额外空间或填充的记录中。填充允许文档随着更新而增长,同时最大限度地减少重新分配的可能性。

WiredTiger 文档对此只字未提。所以我只想知道当记录大小发生变化时是否很好,或者它有一些性能问题但在文档中没有提到。

4

1 回答 1

3

您不必担心使用 WiredTiger 的文档移动、填充等。新写入最初会写入未使用区域中的文件,然后在后台与其余数据合并。在更新期间,WiredTiger 实际上会编写新版本的文档,而不是像 mmapv1 在许多情况下那样覆盖现有数据。(查看来自 MongodDB 免费在线课程的视频)

于 2016-07-23T18:05:49.037 回答