嗯,可能这应该从文档中清楚,遗憾的是,事实并非如此。我的猜测是,这个契约对集合进行了某种碎片整理 - 这样收集的填充因子会低于给定的值。但是,这似乎不是真的:
> db.aaa.stats().paddingFactor
1.9980000000000002
> db.runCommand ( { compact: 'aaa', paddingFactor: 1.1 } )
{ "ok" : 1 }
> db.aaa.stats().paddingFactor
1.9980000000000002
> db.runCommand ( { compact: 'aaa', paddingFactor: 3 } )
{ "ok" : 1 }
> db.aaa.stats().paddingFactor
1.9980000000000002
如果这不是更改集合的填充因子的方法,还有其他方法吗?
答案 0 :(得分:4)
我的猜测是,那个契约会对集合进行某种DE碎片
是。它重写,对片段上的所有数据和索引进行DE片段化。
这样的集合的填充因子
没有。它不会改变集合的填充因子。
来自docs:
compact压缩现有文档但不重置paddingFactor 集合的统计数据。紧凑的MongoDB将使用 在为文档分配新记录时,现有的paddingFactor 这个系列。
因此,当您执行以下命令时,
db.runCommand ( { compact: 'aaa', paddingFactor: 1.1 } )
使用指定的填充因子更改集合中现有文档的记录大小。也就是说,所有现有记录现在10%
的{{1}}大小为document size
。
因此,在DE碎片之后,所有现有记录的大小都会改变为
padding
并且不影响或更改整个集合的填充因子。
更改集合的填充因子的方法,是否有其他方法可以这样做?
没有。您无法选择或更改集合的填充因子。来自docs:
填充因子: 一个自动校准的常量,用于确定MongoDB应在磁盘上为每个文档容器分配多少额外空间。一个 填充因子为1意味着MongoDB将仅分配金额 文件所需的空间。填充因子为2意味着 MongoDB将分配两倍所需的空间量 文档。