对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

bdb log为什么 有 region buffer 和 log cursor buf的更多相关文章

  1. 手动创建binary log files和手动编辑binary log index file会有什么影响

    基本环境:官方社区版MySQL 5.7.19 一.了解Binary Log结构 1.1.High-Level Binary Log Structure and Contents • Binlog包括b ...

  2. MySQL的redo log结构和SQL Server的log结构对比

    MySQL的redo log结构和SQL Server的log结构对比 innodb 存储引擎 mysql技术内幕 log buffer根据一定规则将内存中的log block刷写到磁盘,这个规则是 ...

  3. git log命令全解析,打log还能这么随心所欲!

    git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! ...

  4. RMAN-06059: expected archived log not found, loss of archived log compromises recoverability

    归档日志被物理删除后执行rman操作报错: RMAN> backup database plus archivelog; Starting backup at -JUL- :: current ...

  5. 17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 得到复制master binary log 位置:

    17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 得到复制master binary log 位置: 你需要master ...

  6. 17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 获取复制Master Binary Log的坐标:

    17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 获取复制Master Binary Log的坐标: 你需要master ...

  7. log.error("异常:", e);与log.error(e.getMessage());区别

    转: log.error("异常:", e);与log.error(e.getMessage());区别 2017年04月28日 14:51:32 行走的soong 阅读数:120 ...

  8. rest-assured 将log()中的信息打印到log日志中去的方法

    rest-assured 将log()中的信息打印到log日志中去的方法: ============方法1============== PrintStream fileOutPutStream = n ...

  9. MySQL必知必会:简介undo log、truncate、以及undo log如何帮你回滚事物

    目录 一.前言 二.undo log表空间 三.关于undo log默认的配置 四.如何将undo log放到单独的表空间 文章公众号首发,持续更新中 五.rollback segment 六.什么是 ...

随机推荐

  1. i2c协议简要分析(转载)

    声明 本文大部分内容为转载,因此标定为转载 源地址: http://www.cnblogs.com/zym0805/archive/2011/07/31/2122890.html http://blo ...

  2. ASP.Net MVC3安全升级导致程序集从3.0.0.0变为3.0.0.1

    开发环境一般引用的是本机 C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies下的System.Web.Mvc.dll,当 ...

  3. Android背景渐变色(shape,gradient)

    Android设置背景色可以通过在res/drawable里定义一个xml,如下: <?xml version="1.0" encoding="utf-8" ...

  4. 安装好grunt,cmd 提示"grunt不是内部或外部命令" 怎么办?

    Grunt和所有grunt插件都是基于nodejs来运行的,因此,必须安装node.js. (一) 去官网http://nodejs.org/ 下载安装包 node-v6.9.2.msi,直接点击安装 ...

  5. spring boot 学习笔记(二) 构建web支持jsp

    一.必须将项目打包成war包 <packaging>war</packaging> 二.pom.xml加入依赖包 <dependency> <groupId& ...

  6. 前端自动构建工具@gulp入门

    gulp是一个自动化的前端工具.它可以利用自身的插件来实现一些功能,如sass.less编译:浏览器自动刷新,文件压缩.重命名.代码校验(个人使用sublime的插件进行校验)等功能.当然这些功能也可 ...

  7. 23种oop设计模式定义

    创建型模式 单例模式:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实现.   工厂模式:定义一个用于创建对象的接口,让子类决定将哪一个类实例化.工厂方法使一个类的实例化延迟到子类. 抽象 ...

  8. amr转MP3

    using System; using System.Threading; using System.IO; using System.Diagnostics; using System.Securi ...

  9. CentOS 6.5 x86_64系统手动释放内存

    1.查询当前内存使用情况和释放缓存的参数 redismaster 10:29:24 [~] [root] free -m total used free shared buffers cachedMe ...

  10. Nodejs在centos下的安装

    新学了nodejs,发现在centos下面安装的时候,与windows有一些不同的地方,以前习惯在安装不上的时候,去百度出来,解决了以后,当时都记住如何解决的了,但是过了一段时间以后,就全都忘记光了, ...