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

前端之家收集整理的这篇文章主要介绍了bdb log为什么 有 region buffer 和 log cursor buf前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

对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

猜你在找的程序笔记相关文章