H2 Database MVStore Commit 流程
H2 Database MVStore Commit 流程
作用
BackgroundWriterThread 按照固定频率,将内存里修改的尚未保存的 Page 信息持久化到存储。
流程
启动阶段创建后台线程
org.h2.mvstore.MVStore#setAutoCommitDelay
1.创建 BackgroundWriterThread 后台线程
2.创建序列化线程 serializationExecutor
3.创建持久化线程 bufferSaveExecutor
设置自动提交更改的最大延迟(单位毫秒)。
默认值为 1000,这意味着所有更改最多在一秒后提交。
要禁用自动提交,请将值设置为 0。在这种情况下,仅在显式调用 commit 时才会提交更改。
BackgroundWriterThread 线程逻辑
org.h2.mvstore.FileStore.BackgroundWriterThread#run
org.h2.mvstore.FileStore#writeInBackground
org.h2.mvstore.FileStore#getTimeSinceCreation
获取 mvStore 自创建以来的时间
判断当前相对时间 > 上次提交相对时间 + 延迟时间
org.h2.mvstore.MVStore#tryCommit
提交修改
org.h2.mvstore.MVStore#store
org.h2.mvstore.MVStore#hasUnsavedChanges
判断 mvMap 有变更
浙公网安备 33010602011771号