关于 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 the paddingFactor, by subtracting1 from the paddingFactor:

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

For example, a paddingFactor of 1.0 specifies a padding size of0 whereas a paddingFactor 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 ofthe compact command to set the record size to 1.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

关于 paddingFactor 及 COLLMOD 的设置值相关推荐

  1. Jquery系列:checkbox 获取值、选中、设置值、事件监听等操作

    <div id="divId" class="divTable"><div class="tableBody">&l ...

  2. OpenCV中函数imread的参数flags的枚举值(可设置值)及其具体意义

    imread函数的原型如下: C++: Mat cv::imread(const String & filename,int flags = IMREAD_COLOR) Python: ret ...

  3. 【Flutter】Animation 动画 ( Flutter 动画基本流程 | 创建动画控制器 | 创建动画 | 设置值监听器 | 设置状态监听器 | 布局中使用动画值 | 动画运行 )

    文章目录 一.创建动画控制器 二.创建动画 三.设置值监听器 四.设置状态监听器 五.布局中使用动画值 六.动画运行 七.完整代码示例 八.相关资源 Flutter 动画基本流程 : ① 创建动画控制 ...

  4. 对话框Flags的设置值

    Value 的设置值是: 常数 值 描述 cdlOFNAllowMultiselect &H200 它指定文件名列表框允许多重选择. 运行时,通过按 SHIFT 键以及使用 UP ARROW ...

  5. Redis设置值并设置过期时间

    Setex 设置值,并设置key的过期时间 如果,key已经存在,会覆盖原先值 过期时间默认单位秒 K4设置值 10秒过期

  6. Redis批量设置值取值

    操作命令 Mset--批量设置值 Mget--批量获取值 注意 只要有一个已存在,都会设置失败 K3已存在 K4设置失败 只有,都不存在 才会设置成功 K4.k5

  7. Redis根据是否存在设置值

    Setnx 根据是否存在,设置值 如果,存在,不做操作 如果,不存在,设置值 K1存在 设置失败 K11不存在 设置成功

  8. android studio debug设置,在Android Studio中使用Flutter进行调试时如何“设置值...”

    问题 使用"New Flutter Project"创建Flutter App时,以下图像和代码是默认设置 . import 'package:flutter/material.d ...

  9. 弹出键盘windowsoftinputmode属性设置值

    windowSoftInputMode属性设置值 2012-08-30 16:49 1592人阅读 评论(0) 收藏 举报 androidattributes活动 (1).AndroidManifes ...

最新文章

  1. Nature 子刊:三代测序的DNA提取和宏基因组学分析
  2. USB4 来了(一)
  3. Windows下安装Cygwin配置Hadoop集群
  4. vs五子棋c语言代码,五子棋代码C语言版.doc
  5. Cpp 对象模型探索 / 多重继承虚函数表分析
  6. OpenCV+python调用本地摄像头并录制视频
  7. Lachesis Shield 设计上的抉择
  8. IDEA 统计插件Statistic:查看你的代码量
  9. android好玩的app,6款好用又好玩的黑科技APP,第3款居然是蚁帮,凭什么?
  10. 深入理解Eureka自我保护机制
  11. jmeter录制手机脚本
  12. 【ROS进阶】常用函数——ros::ok(),ros::Rate,ros::spin()和ros::spinOnce()
  13. Springboot框架整合Mybatis-plus实战动态SQL以及常见的Mybatis面试题
  14. python处理时序数据总结
  15. 网页播放视频怎么更改播放倍速
  16. H5页面跳转小程序分享-山东标梵互动
  17. 《奇点临近》的一些优秀读后感
  18. java中怎么实现指数幂,java中幂指数值的运算代码解析
  19. linux下如何拷贝软链接
  20. 古典之颠 科技之耀:看裂帛CIO大麦打造互联网品牌的生态牧场

热门文章

  1. Python账号密码登陆判断(三次机会)
  2. 洛谷——P1002 过河卒||codevs——T1010 过河卒
  3. tablib把数据导出为Excel、JSON、CSV等格式的Py库(写入数据并导出exl)
  4. javascript模式——Mixin
  5. 需要按次序点击链接的网页特效
  6. android Animator详解
  7. python xlrd文件
  8. SpringMvc之参数绑定注解详解
  9. [转]布隆过滤器详解
  10. 操作系统识别-python、nmap