MongoDB为文档增长预分配空间。这可以通过noPadding
选项关闭,但这仅适用于MMAPv1引擎。
WiredTiger引擎有类似的选择吗?我有一些只有插入增长的集合,因此文档大小将始终相同。
我想让我的收藏品尽可能小。因此,如果MongoDB的任何功能为WiredTiger提供空间节省(如noPadding),我想知道。
答案 0 :(得分:2)
WiredTiger没有填充,因为有no in-place updates (see slide 25)。而是将整个更新的文档写入新位置,称为写时复制。
当然,这会导致数据文件比他们需要的更大。但是,如果您使用压缩(默认情况下已打开),则开销应该相当小。
如果你真的想确保不“浪费”任何空间,可以使用compact
command:
use yourDb
db.runCommand({compact:"yourColl"})
此releases unused disk space to the system,但在操作过程中存在blocking the database的缺点。