Mongodb的小型实际上做了什么?

时间:2014-11-28 19:05:58

标签: mongodb padding compact-database

嗯,可能这应该从文档中清楚,遗憾的是,事实并非如此。我的猜测是,这个契约对集合进行了某种碎片整理 - 这样收集的填充因子会低于给定的值。但是,这似乎不是真的:

> 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

如果这不是更改集合的填充因子的方法,还有其他方法吗?

1 个答案:

答案 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将分配两倍所需的空间量   文档。