mongodb给我们提供了fsync+lock机制把数据暴力的刷到硬盘上
能不能把数据暴力的刷到硬盘上,当然是可以的,mongodb给我们提供了fsync+lock机制就能满足我们提的需求。
fsync+lock首先会把缓冲区数据暴力刷入硬盘,然后给数据库一个写入锁,其他实例的写入操作全部被阻塞,直到fsync
+lock释放锁为止。
这里就不测试了。
加锁: db.runCommand({"fsync":1,"lock":1})
释放锁: db.$cmd.unlock.findOne()
fsync
-
Forces the
mongod
process to flush all pending writes from the storage layer to disk. Optionally, you can usefsync
to lock themongod
instance and block write operations for the purpose of capturing backups.As applications write data, MongoDB records the data in the storage layer and then writes the data to disk within the
syncPeriodSecs
interval, which is 60 seconds by default. Runfsync
when you want to flush writes to disk ahead of that interval.The
fsync
command has the following syntax:{ fsync: 1, async: <Boolean>, lock: <Boolean> }
The
fsync
command has the following fields:Field Type Description fsync
integer Enter “1” to apply fsync
.async
boolean Optional. Runs fsync
asynchronously. By default, thefsync
operation is synchronous.lock
boolean Optional. Locks mongod
instance and blocks all write operations.
Examples
Run Asynchronously
The fsync
operation is synchronous by default. To run fsync
asynchronously, use the async
field set totrue
:
{ fsync: 1, async: true }
The operation returns immediately. To view the status of the fsync
operation, check the output ofdb.currentOp()
.
Lock mongod
Instance
NOTE
Changed in version 3.2: fsync
command with the lock
option can ensure that the data files do not change for MongoDB instances using either the MMAPv1 or the WiredTiger storage engines, thus providing consistency for the purposes of creating backups.
In previous MongoDB versions, fsync
command with the lock
option cannot guarantee a consistent set of files for low-level backups (e.g. via file copy cp
, scp
, tar
) for WiredTiger.
The primary use of fsync
is to lock the mongod
instance in order to back up the files within mongod
‘sdbPath
. The operation flushes all data to the storage layer and blocks all write operations until you unlock themongod
instance.
To lock the database, use the lock
field set to true
:
{ fsync: 1, lock: true }
You may continue to perform read operations on a mongod
instance that has a fsync
lock. However, after the first write operation all subsequent read operations wait until you unlock the mongod
instance.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」