关于 paddingFactor 及 COLLMOD 的设置值
关于 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 的设置值相关推荐
- Jquery系列:checkbox 获取值、选中、设置值、事件监听等操作
<div id="divId" class="divTable"><div class="tableBody">&l ...
- OpenCV中函数imread的参数flags的枚举值(可设置值)及其具体意义
imread函数的原型如下: C++: Mat cv::imread(const String & filename,int flags = IMREAD_COLOR) Python: ret ...
- 【Flutter】Animation 动画 ( Flutter 动画基本流程 | 创建动画控制器 | 创建动画 | 设置值监听器 | 设置状态监听器 | 布局中使用动画值 | 动画运行 )
文章目录 一.创建动画控制器 二.创建动画 三.设置值监听器 四.设置状态监听器 五.布局中使用动画值 六.动画运行 七.完整代码示例 八.相关资源 Flutter 动画基本流程 : ① 创建动画控制 ...
- 对话框Flags的设置值
Value 的设置值是: 常数 值 描述 cdlOFNAllowMultiselect &H200 它指定文件名列表框允许多重选择. 运行时,通过按 SHIFT 键以及使用 UP ARROW ...
- Redis设置值并设置过期时间
Setex 设置值,并设置key的过期时间 如果,key已经存在,会覆盖原先值 过期时间默认单位秒 K4设置值 10秒过期
- Redis批量设置值取值
操作命令 Mset--批量设置值 Mget--批量获取值 注意 只要有一个已存在,都会设置失败 K3已存在 K4设置失败 只有,都不存在 才会设置成功 K4.k5
- Redis根据是否存在设置值
Setnx 根据是否存在,设置值 如果,存在,不做操作 如果,不存在,设置值 K1存在 设置失败 K11不存在 设置成功
- android studio debug设置,在Android Studio中使用Flutter进行调试时如何“设置值...”
问题 使用"New Flutter Project"创建Flutter App时,以下图像和代码是默认设置 . import 'package:flutter/material.d ...
- 弹出键盘windowsoftinputmode属性设置值
windowSoftInputMode属性设置值 2012-08-30 16:49 1592人阅读 评论(0) 收藏 举报 androidattributes活动 (1).AndroidManifes ...
最新文章
- Nature 子刊:三代测序的DNA提取和宏基因组学分析
- USB4 来了(一)
- Windows下安装Cygwin配置Hadoop集群
- vs五子棋c语言代码,五子棋代码C语言版.doc
- Cpp 对象模型探索 / 多重继承虚函数表分析
- OpenCV+python调用本地摄像头并录制视频
- Lachesis Shield 设计上的抉择
- IDEA 统计插件Statistic:查看你的代码量
- android好玩的app,6款好用又好玩的黑科技APP,第3款居然是蚁帮,凭什么?
- 深入理解Eureka自我保护机制
- jmeter录制手机脚本
- 【ROS进阶】常用函数——ros::ok(),ros::Rate,ros::spin()和ros::spinOnce()
- Springboot框架整合Mybatis-plus实战动态SQL以及常见的Mybatis面试题
- python处理时序数据总结
- 网页播放视频怎么更改播放倍速
- H5页面跳转小程序分享-山东标梵互动
- 《奇点临近》的一些优秀读后感
- java中怎么实现指数幂,java中幂指数值的运算代码解析
- linux下如何拷贝软链接
- 古典之颠 科技之耀:看裂帛CIO大麦打造互联网品牌的生态牧场