加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

bdb log为什么 有 region buffer 和 log cursor buf

发布时间:2020-12-15 00:45:19 所属栏目:C语言 来源:网络整理
导读:对bdb log来说,在共享内存中 有一块 buffer,同时每一个 log cursor 都自带一个 malloc的buf. why? 我认为: region buffer存的是log最末尾,主要用来写. 毕竟 log 是 顺序写的,最末尾的 log rec当然最热. 同时 多个 log rec缓存起来 一次写入对io 有极大好处.

对bdb log来说,在共享内存中 有一块 buffer,同时每一个 log cursor 都自带一个 malloc的buf. why?

我认为:
region buffer存的是log最末尾,主要用来写. 毕竟 log 是 顺序写的,最末尾的 log rec当然最热. 同时 多个 log rec缓存起来 一次写入对io 有极大好处.

log cursor的buf是用来读的. 可以是log 中每一部分. 这里 类似 read ahread(read behind),每次从disk读,都是读一整块 log buf size.

好处不言而喻,但同时 逻辑 就复杂了,

在logc_get() 中,需要考虑: 

  1. 要取的 log rec是否在 cursor buf中? (必须 整个 log rec都在 cursor buf)

  2. 要取的 log rec是否在 region buf中? (整个 log rec都在 region buf; 部分在region buf,部分需要从disk 读的情况)

  3. 从disk log file 读log rec

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读