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

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

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

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

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

相关推荐
Codeking__15 小时前
Redis的value类型介绍——zset
数据库·redis·缓存
muddjsv15 小时前
SQLite3 核心命令全解析 (从入门到精通)
数据库
難釋懷16 小时前
认识NoSQL
数据库·nosql
亿坊电商16 小时前
利于SEO优化的CMS系统都有哪些特点?
前端·数据库
阿阿阿安16 小时前
MySQL(一)数据库风险操作场景总结
数据库·mysql
心丑姑娘16 小时前
使用ClickHouse时的劣质SQL样例
数据库·sql·clickhouse
什么都不会的Tristan16 小时前
redis篇
数据库·redis·缓存
only°夏至besos16 小时前
MySQL 运维实战:常见问题排查与解决方案
运维·数据库·mysql
液态不合群16 小时前
并发,并行与异步
数据库
Dxy123931021616 小时前
MySQL如何批量更新数据:高效方法与最佳实践
数据库·mysql