mongodb笔记之---journal文件

journal文件作用:
journal文件在MongoDB中的作用相当于redo日志文件在oracle中的作用,它可以在即使服务器意外宕机的情况下,将数据库操作进行重演。

在64位的机器上,2.0以上版本默认是开启了journal的,但是在32位机器上,或者2.0以下的版本中,默认是不开启journal的。
所以在我的安装了2.4.3版本的32位机器上,
每次启动mongodb都提示“warning: 32-bit servers don’t have journaling enabled by default.
Please use --journal if you want durability.”,
所以我须要在启动mongodb时带上 --journal 参数;而在默认启动journal的机器上如果不想启动journal,则可以带上 --nojournal 参数。

关于journal文件的刷新
默认情况下mongodb每100毫秒往journal文件中flush一次数据,不过这是在数据文件和journal文件处于同一磁盘卷上的情况,
而如果数据文件和journal文件不在同一磁盘卷上时,默认刷新输出时间是30毫秒。

不过这个毫秒值是可以修改的,可修改范围是2~300,值越低,刷新输出频率越高,数据安全度也就越高,但磁盘性能上的开销也更高。

journal文件是以“j._”开头命名的,且是append only的,如果1个journal文件满了1G大小,mongodb就会新创建一个journal文件来使用,
一旦某个journal文件所记载的写操作都被使用过了,mongodb就会把这个journal文件删除。
通常在journal文件所在的文件夹下,只会存在2~3个journal文件,除非你使用mongodb每秒都写入大量的数据。
而使用 smallfiles 这个运行时选项可以将journal文件大小减至128M大小

当系统启动时,mongodb会将数据文件映射到一块内存区域,称之为Shared view

在不开启journal的系统中,数据直接写入shared view,然后返回,系统每60s刷新这块内存到磁盘,这样,如果断电或down机,就会丢失很多内存中未持久化的数据

当系统开启了journal功能,系统会再映射一块内存区域供journal使用,称之为private view
mongodb默认每100ms刷新privateView到journal

也就是说,断电或宕机,有可能丢失这100ms数据,一般都是可以忍受的,如果不能忍受,那就用程序写log吧。
这也是为什么开启journal后mongod使用的虚拟内存是之前的两倍。Mongodb的隔离级别是read_uncommitted,
不管使用不使用journal,都是以内存中的数据为准,只不过,不开启journal,数据从shared view读取,开启journal,数据从private view读取

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值