【赵渝强老师】MongoDB写入数据的过程

在MongoDB数据更新时,WiredTiger存储引擎使用预写日志的机制先将数据更新写入到Journal日志文件中。然后在创建检查点操作开始时,再将日志文件中记录的操作刷新到数据文件。换句话说,通过预写日志和检查点机制可以保证将数据更新持久化到数据文件中,并实现数据的一致性。

视频讲解如下
【赵渝强老师】MongoDB写入数据的过程

在检查点(Checkpoint)操作开始时,WiredTiger存储引擎将提供指定时间点的数据库快照,该快照反映的是MongoDB当前内存中的数据情况。当向磁盘写入数据时,WiredTiger存储引擎将快照中的所有数据以一致性方式写入到MongoDB的数据文件上,并保证数据文件和内存数据是一致性的。由于检查点是定期执行,因此检查点操作能够缩短MongoDB从Journal日志文件恢复数据的时间。在默认情况下,WiredTiger存储引擎创建检查点的时间间隔是60秒或产生2GB的Journal日志信息文件。在WiredTiger存储引擎创建新的检查点期间,上一个检查点仍然是有效的。这意味着即使MongoDB在创建新的检查点期间遭遇到错误而异常终止运行,只要重启MongoDB就能从上一个有效的检查点开始恢复数据。当新的检查点创建成功后,WiredTiger存储引擎以原子方式更新元数据表使其引用新创建的检查点,同时会将老的检查点占用的磁盘空间释放。

下图说明了MongoDB写入数据时,MongoDB的预写日志机制及与产生检查点操作之间的关系。

相关推荐
葫芦和十三2 小时前
图解 MongoDB 25|分片架构三件套:mongos、config server 和 shard
后端·mongodb·agent
葫芦和十三9 小时前
图解 MongoDB 26|片键设计:决定集群命运的一个决定
后端·mongodb·agent
先吃饱再说16 小时前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils16 小时前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端
Databend19 小时前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶19 小时前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构
smallyoung20 小时前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·mysql·postgresql
parade岁月20 小时前
MySQL JOIN解析:朴实无华但食之有味
数据库·后端
用户31693538118321 小时前
MySQL服务无法启动问题解决全记录
数据库
vivo互联网技术1 天前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页