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 有变更
   
posted on 2024-11-14 08:19  flyingzc  阅读(0)  评论(0)    收藏  举报  来源