MongoDB日志是如何工作的
admin
2023-04-13 17:21:38
0

Good idea, Patrick!

那么, MongoDB日志是如何工作的呢?

我们用下图表示硬盘上的数据文件和日志文件:

MongoDB日志是如何工作的

当你使用mongod启动MongoDB的时候,数据文件将被加载到共享视图。基本上,操作系统说:“OK,你的数据占用2,000bytes的磁盘空间,我将加载他们到内存地址为1,000,000-1,002,000.所以,如果你读内存地址为1,000,042,你就可以获取这个文件的第42个byte的数据。”(其实,除非你真的存取这些内存地址,否则这些数据没必要加载)

MongoDB日志是如何工作的

这段内存仍然被这个数据文件占有:如果你在这段内存中做修改,操作系统将刷新这个文件,修改数据。这就是mongod不开启日志的工作方式:进程每60秒通知操作系统对这段内存做flush操作。

然而,启用日志,mongod会建立另一个内存映射用作私有视图。这就是为什么需要分配两倍于mongod所占内存的内存量给日志操作的原因。

MongoDB日志是如何工作的

需要注意的是私有视图不直接关联到数据文件,所用操作系统不能通过刷新私有视图来写数据到磁盘。

现在,当你有一个写操作,mongod进程就把这个操作写到私有视图。

MongoDB日志是如何工作的

mongod进程会把这个操作写到日志文件,并描述哪个文件的哪个字节有修改。

MongoDB日志是如何工作的

日志记录每一个修改操作。

MongoDB日志是如何工作的

这个时候,写操作是安全的。如果mongod进程崩溃,日志可以重现此次修改,即使还没有对数据文件做更新操作。

MongoDB日志是如何工作的

然后,mongod进程重新将共享视图映射到私有视图,这样可以防止私有视图过于“dirty”(相对于映射过来的共享视图有太多的修改)。

MongoDB日志是如何工作的

最后,经过一系列漫长的验证,共享视图数据将会被刷新到磁盘。默认情况下,mongod每60秒对OS请求一次刷新操作。

And that’s how journaling works. Thanks to Richard, who gave the best explanation of this I’ve heard (Richard is going to be teaching an online course on MongoDB this fall, if you’re interested in more wisdom from the source).

相关内容

热门资讯

员工用企业账号向顾客发送“有偿... “5000陪我一晚上有时间吗?”近日,贵阳一沪上阿姨门店的企业成员账号给顾客发送“有偿陪睡”信息一事...
一枚鸡蛋的价值跃升之旅(合力奋... □本报全媒体记者 陈晨 蒋晓芳 本报通讯员 范鑫 一枚普通的鸡蛋,在科技创新的加持下,能释放出多大能...
四川省省长施小琳:将“人工智能... 中新社成都5月11日电 (单鹏 程兆 王鹏)四川省省长施小琳11日在成都表示,四川将“人工智能+”作...
75个OpenAI打工人,一夜... ▲头图由AI辅助生成 智东西 编译 | 陈佳 编辑 | 漠影 智东西5月11日消息,今日,据《华尔街...
英媒披露:美国要求在格陵兰新开... 【文/观察者网 王一】美国总统特朗普仍没有放弃他对格陵兰岛的野心。据英国广播公司(BBC)5月12日...
南京审计大学一男生被曝在校内偷... 南京审计大学5月12日通报:2026年5月11日晚,有网友在网络平台反映我校某学生涉嫌偷拍他人隐私。...
告别“从摇篮到坟墓”保障?“瑞... 【文/观察者网 柳白】那个人们熟知的,以“从摇篮到坟墓”保障著称的高福利国家瑞典,正在悄然发生变化。...
以算电协同赋能新型能源体系 来源:经济日报 “十五五”时期是我国基本实现社会主义现代化夯实基础、全面发力的关键时期,也是我国加快...
原创 芯... 文/王新喜 近期,中芯国际创始人张汝京在采访中表示,认为在半导体行业取得成功就必须能够制造3nm或2...
Maximo机器人太阳能安装系... Maximo是由AES公司孵化的太阳能机器人企业,近日宣布在AES位于加州克恩县加州城附近的Bell...