MongoDB-Journaling日志功能

MongoDB的Journaling日志确保了在意外情况下的数据完整性,类似RDBMS的事务日志。它包括private和shared内存视图,通过MMAP实现。private视图保存写操作,数据在journal提交后复制到shared视图并最终刷新到磁盘。MongoDB启动时读取journal日志文件恢复数据。journaling保证即使服务器崩溃,数据也安全,并在重启后恢复。
摘要由CSDN通过智能技术生成

Journaling日志简介

Journaling日志是MongoDB中一个非常重要的功能,他保证了数据库服务器在意外断电、自然灾害下数据的完整性 。该功能类似于RDB中的事务日志,使得数据库在意外故障后快速回复,该功能默认打开

内存视图

Journaling功能的两个重要内存视图:private view 与 shared view ,这两个视图都是通过MMAP(内存映射)来实现的,对private view的映射的内存修改不会影响到磁盘上,而对shared中数据的变化则会影响到磁盘上的文件,系统会周期性的刷新shared view数据到磁盘上。

shared view在MongoDB启动的过程中,操作系统会将磁盘上的数据文件映射到内存中的shared view,注意,操作系统只是映射,并未加载数据到内存,MongoDB稍后会更具需要加载数据到shared view;

private view内存视图是为读操作保存数据的位置,是MongoDB保存新的写操作的第一个地方,一旦journal日志提交完成,MongoDB会复制private视图中的改变到shared视图,再通过shared视图将数据刷入到磁盘数据文件。

磁盘山的Journaling日志文件是实现写操作持久化保存的地方,MongoDB实例启动时会读取该文件。

工作原理

MongoDB进程启动后,首先将数据文件映射到shared视图中,假如数据文件大小为4000字节,MongoDB会将此大小的数据文件映射到内存中,地址可能为1000000~1004000。如果直接读取地址为100060的内存,我们会得到数据文件中第60个字节的内

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值