关于 paddingFactor 及 COLLMOD 的设置值

来源:互联网 发布:凤岗淘宝培训 编辑:程序博客网 时间:2024/05/16 09:12

关于 paddingFactor 一直感觉很玄乎。不知道这个值到底是什么单位,比如显示1 或 1.4 。


> db.test.stats()
{
    "ns" : "test.test",
    "count" : 6,
    "size" : 272,
    "avgObjSize" : 45.333333333333336,
    "storageSize" : 4096,
    "numExtents" : 1,
    "nindexes" : 1,
    "lastExtentSize" : 4096,
    "paddingFactor" : 1,
    "systemFlags" : 0,
    "userFlags" : 0,
    "totalIndexSize" : 8176,
    "indexSizes" : {
        "_id_" : 8176
    },
    "ok" : 1
}
>


而同事也一直纠结的问,一个字段修改后,多长才会被移到表后面啊。

我也说不出一个所以然来。


在查找资料时,看到有关于表(集合)的一个配置,设置COLLMOD的值:


http://docs.mongodb.org/manual/reference/command/collMod/


db.runCommand( {collMod: "products", usePowerOf2Sizes : true })


You can calculate the padding size by subtracting the document size fromthe record size or, in terms of thepaddingFactor, by subtracting1 from thepaddingFactor:

padding size = (paddingFactor - 1) * <document size>.

For example, a paddingFactor of1.0 specifies a padding size of0 whereas apaddingFactor of 1.2 specifies a padding size of0.2 or 20 percent (20%) of the document size.

With the following command, you can use the paddingFactor option ofthecompact command to set the record size to1.1 ofthe document size, or a padding factor of 10 percent (10%):

db.runCommand ( { compact: '<collection>', paddingFactor: 1.1 } )

从官方的说明文档来看,这个值还真是 % ,当然也可以自己修改。



还有下面的转载内容,把这个说明得也很清楚。直接出答案:


collmod 选项:

  第一种padding方式,Mongodb会计算一个_paddingFactor,开辟

padding size = (paddingFactor - 1) * <document size>.

大小,以防止update引起的长度变大,需要移动数据。第二种方式usePowerOf2Size,Mongodb为文档开辟的空间总是2的倍数,如之前我们说过的,文档大小68字节,那么就会开辟128字节,bucket函数就是从bucketSize数组中寻找最接近文档长度的那个2的次方值。


 这两种方式各有优劣,padding方式会为文档开辟更合适的大小,而且paddingFactor比较小,一般为0.01-0.09,不会浪费空间,文档更新小的话也不会移动文档位置。但是当大量更新和删除的时候,这种方式重复利用空间的能力就比较小,因为在deleteList中,不太容易找到合适的已删除文档,而且一旦更新就会又移动位置,磁盘重复利用率低,增长快,碎片多。相比之下,usePowerOf2Size方式,Mongodb每次都会开辟比文档大的多的空间,使用空间变多,但是更新和删除的容错率就会比较高,因为在deleteList列表中更容易找到合适的删除文档(每个列表中的文档大小都是相同的固定的),更新的时候也不会大量移动位置,磁盘重复利用率高,增长慢。

来源:

Mongodb如何重复利用空间和usePowerOf2Size标识

http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=15795819&id=3554717



0 0
原创粉丝点击