1

其中一个集合具有带有字段的文档"sc":[float]。我想迭代所有文档并将其更改为"sc": float,即删除数组并将浮点值直接分配给键。

WiredTiger 会附加所有更新的文档,而不是尝试像 MMap 那样进行一些就地更新,这不是真的吗?

这基本上会使数据库的大小增加一倍,最初的一半是过时的数据。

我需要打电话mongod -repair来丢弃那些过时的文件,还是我需要做其他事情?

4

1 回答 1

1

WT 总是在更新时重写文档,但它没有使用填充,而是在空闲块中分配文档,而不是 NMAP,所以如果我们有文档 1、2、3 - 有可能将 no1 移动到文件末尾(或最近的间隙),并且 no2 将分配在先前的 no1 空间中。

WT 最重要的是什么:

WiredTiger 会自动进行空间的持续压缩和重用。

为了确保文件的使用效率,我们可以按照讨论强制 WT 使用较小的页面大小。

--wiredTigerCollectionConfigString="leaf_page_max=8KB"

这里也compact可以用来回收更多空间。

于 2016-06-25T22:26:28.463 回答