WiredTiger 原理知识
一、、mongodb写入操作流程:
1、wiredTiger写操作先到cache,并持久化WAL
2、每60s或log文件达到2G,则执行一次Checkpoint持久化,产生一个新快照。
3、wiredTiger连接初始化时,先将数据恢复到最新的快照,再根据WAL恢复数据。
二、Cache
Cache采用Btree方式组织,每个Btree节点为一个page,数据以page为单位按需从磁盘加载或写入磁盘
root page:Btree的根节点
internal page:中间索引节点
page:叶子节点,数据存储在此节点。
image
三、增删改
采用Copy on write的方式管理insert、update、delete。
修改操作:
1、数据读入Cache里,
2、对数据修改,
3、持久化时,写入新的page(不会写原理的leaf page)。
4、执行Chechpoint之后,产生新的page。
四、Checkpoint
每次Checkpoint的过程:
1、对所有的table进行一次Checkpoint,将每个table的Checkpoint的元数据更新到WiredTiger.wt
2、再对WiredTiger.wt进行Checkpoint,将Checkpoint的meta数据更新到WiredTiger.turtle.set
3、将WiredTiger.turtle.set重命名为WiredTiger.turtle
五、WiredTiger包含以下文件:
WiredTiger.basecfg :存储基本配置信息
WiredTiger.lock用于防止多个进程连接同一个WiredTiger数据库
table*.wt存储各个table的数据
WiredTiger.wt:是特殊的table,用于存储所有其他table的meta数据信息
WiredTiger.turtle:存储WireTiger.wt的meta数据信息