MongoDB Journaling工作原理

news2025/1/21 11:59:26

文章目录

  • 小结

当 mongod 进程启动后,首先将数据文件映射到 shared 视图中,假如数据文件的大小为 4000 个字节,它会将此大小的数据文件映射到内存中,地址可能为 1000000~1004000。如果直接读取地址为1000060的内存,我们将得到数据文件中第60个字节处的内容。有一点要注意,这里只是完成了数据文件的内存映射,并不是将全部文件加载到内存中,只有读取到某个地址时才会将相应的文件内容加载到内存中,相当于按需加载。
在这里插入图片描述

当写操作或修改操作发生时,进程首先会修改内存中的数据,此时磁盘上的文件数据就与内存中的数据不一致了。如果mongod启动时没有打开Journaling功能,操作系统将每 60 秒刷新 shared 视图对应的内存中变化的数据并将它写到磁盘上。如果打开了Journaling日志功能,mongod将额外产生一个private视图,MongoDB会将private视图与shared视图同步,如图所示。
在这里插入图片描述

当写操作发生时,MongoDB首先将数据写到内存中的private视图处,注意private视图并没有直接与磁盘上的文件连接,因此此时操作系统不会将变化刷新到磁盘上,如图所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElementUI的Form表单使用slot-scope=“scope“获取当前表格行数据实现数据回显、修改表单操作

在写项目时,老师通过向后端发请求获得表格原来的数据来填充修改表单里的数据。 这是表格: 这是点击修改按钮后显示出来的修改表单: 但本地里都已经有这些数据了,就没必要再发一次请求,徒增服务器压力。 准备 可是…

Java基础之《netty(3)—NIO之Buffer》

一、Buffer基本介绍 1、缓冲区(Buffer) 缓冲区本质上是一个可以读写数据的内存块,可以理解成是一个容器对象(数组)。该对象提供了一组方法,可以更轻松的使用内存块。缓冲区对象内置了一些机制,…

黑盒子问题

一 问题描述 黑盒子代表一个原始数据库,存储一个整数数组和一个特殊的 i 变量。最初的时刻,黑盒子是空的,i0,黑盒子处理一系列命令(事务)。有两种类型的事务。 ① ADD(x),将元素 x 放入黑盒子…

按用户导出数据到asm磁盘组,并复制到另一个集群的asm

1.创建asm导出数据目录 sql>select name,total_mb,free_mb from v$asm_diskgroup; 确认集群asm磁盘组环境 asmcmd>cd DGDSDB asmcmd>mkdir dpbak asmcmd>ls -l sql>conn / as sysdba create directory expdp_asm_dir as DGDSDB/dpbak; create directory expdp_l…

堆-c语言实现

1. 树是什么? 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合 注意:根结点没有前驱结点;每棵子树的跟结点有且只有一个前驱结点,可能有0个或者多个后继结点&am…

数学建模学习(108):帮助小白快速实现批量机器学习建模训练和批量的数据可视化

本文主要针对机器学习知识薄弱,不太擅长搭建模型同学使用。 本文主要是讲解可以快速轻松实现可视化、数据预处理、批量模型构建。帮助大家轻松做到可视化和建模。特别是机器学习不扎实同学。 数据科学模型开发管道涉及各种组件,包括数据收集、数据处理、探索性数据分析、建模…

unity il2cpp打包安卓打包崩溃原因Unity2020.3 il2cpp.so丢失

Unity2020.3 il2cpp.so 问题:升级unity2020.3后,使用il2cpp方式打Android包,在手机上启动会崩溃,追查崩溃原因是il2cpp.so not found。 解决过程: il2cpp.so没有?一脸懵逼!记得以前在调用Bui…

面试八股 | 计算机网络 | TCP三次握手

CP三次握手和四次挥手是面试题的热门考点,它们分别对应TCP的连接和释放过程,今天我们先来认识一下TCP三次握手过程,以及是否可以使用“两报文握手”建立连接。1、TCP是什么? TCP是面向连接的协议,它基于运输连接来传送…

【附源码】计算机毕业设计JAVA养老机构系统

【附源码】计算机毕业设计JAVA养老机构系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA mybati…

国际物流和跨境电商物流的区别

跨境物流是将货物通过海、陆、空运输从一个国家运输到另一个国家或地区,最终完成交易的目的。国际物流是实现两地对物资进行物理移动的一项国际商品交易或交流活动,从而完成国际商品交易的终目的。二者说法不同而已,本质上两者并没有太大的区…

APAUNet

Title:APAUNet: Axis Projection Attention UNet for Small Target in 3D Medical Segmentation 摘要: 在医学分割中,小目标分割对于诊断至关重要。在本文提出了轴向投影注意力网络,用于三维医学图像分割,特别是小目标。考虑到背…

什么是PCB中的光学定位点,不加可不可以?

什么是PCB中的光学定位点,不加可不可以? 这个问题在我平时的教学答疑出现的频次非常高,很多新手在初次接触这个概念的时候往往分不清楚这个光学定位点作用什么?从而导致他根本不知道什么时候该加,什么时候不加。 今天我…

物流通知:您的快递即刻送达!

“双11”购物狂欢节刚刚过去 “双12”马上就要到啦! 回想双11期间 隔日达、次日达的快递 让买买买的快乐直接翻倍 也大大提升了消费者们 双12的再消费欲望 飞奔的物流背后有什么秘密武器? 来跟着小翼一探究竟! 物流行业的飞速发展给…

Android App开发之利用JNI实现加密和解密操作实战(附源码 简单易懂)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一、JNI实现加密和解密 在实际开发中 JNI主要应用于以下场景 1:对关键业务数据进行加密和解密 Java代码容易遭到破解,JNI加密更加安全 2:底层的网络操作与设备操作 Java作为一门高级…

智慧农业建设方案中的物联网技术

物联网即“物物相联之网”,指通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把物与物,人与物进行智能化连接,进行信息交换和通讯,以实现智能化识别、定…

一分钟给大量视频褪色并加马赛克

剪辑视频的时候,想给大量的视频进行褪色处理,并且添加马赛克,可以用什么简单的操作方法吗?今天小编就来给大家安利一个可以快速批量这样进行操作的方法,下面就来看看具体的操作吧! 首先大家在浏览器搜索下载…

【VTK+有限元后处理】节点属性值查询

功能 有限元在后处理过程中,我们如果想获取某一个节点的属性数据值,最直接的方法就是点击这个节点,然后显示其属性数据。 代码实现 首先我们需要使用到VTK的点拾取类vtkPointPicker类。 从需求可知,我们需要与窗口进行交互&am…

STM32开发_利用SPI协议读写SD卡、介绍SD卡SPI时序

一、​ SD卡引脚接口功能介绍 1.1 SD卡引脚 目录 一、​ SD卡引脚接口功能介绍 1.1 SD卡引脚接口图 1.2 SPI方式驱动SD卡介绍 1.3 开发板接口定义 二、MMC卡、SD卡介绍 2.1 SD卡和MMC两者间区别 2.2 SD卡版本说明 2.3 SD卡常用的指令表 三、向SD卡发送命令的步骤介…

【数据结构】堆的拓展延伸 —— 堆排序 和 TopK问题

文章目录前言堆排序TopK问题结语前言 上篇博客,我们实现了堆。那么堆到底有什么应用情景?今天的内容就是堆的两个应用,堆排序和TopK问题。话不多说,我们这就开始。 堆排序 堆排序,是根据堆的结构而设计出的一种排序…

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

原文链接:https://aclanthology.org/D19-1410.pdf 概述 问题: BERT和RoBERT模型在进行语义匹配的时候,需要将每个可能的组合都输入到模型中,会带来大量的计算(因为BERT模型对于句子对的输入,使用[SEP]来标记…