Mongo3.4 Storage Engines存储引擎(MMAPv1)
来源:互联网 发布:新闻资讯网站源码 编辑:程序博客网 时间:2024/05/28 19:23
MMAPv1是MongoDB基于内存映射文件的存储引擎,它擅长于大容量插入、读取和就地更新的工作负载。
从MongoDB3.2开始MMAPv1不在是Mongo的默认存储引擎,WiredTiger成为了默认存储引擎;
日志
为了确保对MongoDB数据集的所有修改都持久化到硬盘上,默认的MongoDB会将所有的操作日志记录到硬盘上,MongoDB写日志的频率比写数据文件的频率更高。
MMAPv1存储引擎的默认配置是每隔60秒写入到数据文件一次和每隔100毫秒写入到日志文件一次;
可以使用storage.syncPeriodSecs改变写入到数据文件的时间间隔;
MongoDB写入数据文件和日志文件时这些值表示完成写入操作的最大时间量,在许多情况下MongoDB和操作系统刷新数据到硬盘的频率更频繁,所以上面的值代表了理论上的最大值;
日志可以使mongo成功的恢复数据在MongoDB终端或者退出之后;
记录存储特性
所有的记录在磁盘上连续分布,当一个文档变的比他允许的大的时候,MongoDB必须分配一个新的记录,新分配的记录需要MongoDB移动文件和索引,这将比就地更新话费更多的时间
默认情况下MongoDB使用Power of 2 Sized Allocations分配,因此每一个文档存储MongoDB记录和额外的空间;
记录分配策略、
Mongodb支持多种记录分配策略来决定如何将填充添加到文档中当创建一个记录的时候。因为插入之后文档会变大并且所有的记录都是连续的;填充可以减少更新后在磁盘上重新放置文档的需要。搬迁比更新效率低并可能导致存储碎片,因此,所有的填充策略都为增加效率和减少碎片提供了额外的空间。
.不同的分配策略支持不同的工作负载,the power of 2 allocations are more efficient for insert/update/delete workloads; while exact fit allocations is ideal for collections without update and delete workloads.
Power of 2 Sized分配策略
Mongo3.0使用Power of 2 Sized分配策略做为MMAPv1做为默认分配策略,使用Power of 2 Sized分配策略,每个记录的大小都是字节,对于大于2 MB的文件,分配舍入到最近的2 MB的倍数。
the power of 2 sizes 分配策略有一下关键特性
可以有效地重用已释放的记录以减少碎片。将记录分配大小量化为固定的一组大小,增加插入将适合于由先前的文档删除或重新定位创建的空闲空间的可能性。
给一个文档填充空间可以减少移动,
无填充分配策略
对于工作负载不改变文档集合大小的集合,例如只包含插入操作或不增加文档大小的更新操作的工作负载。
- Mongo3.4 Storage Engines存储引擎(MMAPv1)
- Mongo3.4 Storage Engines存储引擎(内存存储引擎)
- Mongo3.4 Storage Engines存储引擎(简介)
- Mongo3.4 Storage Engines存储引擎(将MongoDB实例更改为WiredTiger存储引擎)
- Mongo3.4 Storage Engines存储引擎(将Replica Set更改为WiredTiger存储引擎)
- Chapter 15 Alternative Storage Engines 替代存储引擎
- Mongodb mmapv1存储引擎解析
- Mongodb mmapv1存储引擎解析
- MySQL引擎(Engines)
- MongoDb 的 MMAPv1 和 WiredTiger 存储引擎空间对比(800万文档 )
- Storage Engines
- mongoDB MMAPv1 Storage Engine
- MySQL存储引擎(storage engine)
- MySQL Storage Engines(转)
- MySQL 5.5 Storage Engines
- 把mmapv1存储引擎存储的mongodb3.0数据库数据复制到WiredTiger存储引擎的mongodb3.2中
- List of game engines(遊戲引擎列表)
- android开发引擎收藏(Open Source Android Game Engines)
- StringTokenizer类的使用方法
- jQuery、Ajax 和 JS 之间是什么关系,如何学习 JS ?
- Android app:transformNativeLibsWithStripDebugSymbolForDebug错误分析
- 初学linux-使用万维网
- 使用TextInputLayout创建一个登陆界面
- Mongo3.4 Storage Engines存储引擎(MMAPv1)
- 【集训】jzoj 2017.7.10 noip模拟赛A 总结
- [kotlin系列] (s1_2)基本类型
- js判断两个日期之间的天数差
- C++ 函数重载
- Spring BOOT 热部署
- leetcode 496 Next Greater Element I
- KL散度(Kullback-Leibler Divergence)
- Activity的生命周期