非易失性WAL buffer实现解析(二)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 非易失性WAL buffer实现解析(二)

本文接着介绍WAL写和读的改造。

1、XLogInsert函数改造:将日志写入NVM,此时不确定CPU CACHE何时刷以及顺序

当日志量距离上次checkpoint产生的WAL文件个数(wal_segment_size)超过CheckPointSegments时,需要发起checkpoint请求。需要保证WAL buffer空间够用。

2、XLogPageRead读取指定WAL所在页到readBuf

1readSourceWAL源不是NVM,默认是XLOG_FROM_ANY && Wal记录所在位置的文件未open或者读取WAL源为流复制且需要的日志还未接收到时需要调用函数WaitForWALToBecomeAvailable打开所需WAL文件。第一次进来时readSourceXLOG_FROM_ANY,所以当使用NVM时也会进入该函数,只是该函数会返回false

 2)之后,若使用NVM WAL BUFFER并且非备机模式,readSource也不能是流复制,那么需要将日志源改为NVM WAL BUFFER

 3)此时readSourceNVM WAL BUFFER,读取大小设置为一页大小

 4XLogCtl->pages+targetPagePtr%NvWalSize为读取页的页头地址,调用memcpyNVM的一页内存拷贝到readBuf中,并将时间线从该日志页第一个记录中解析出来

 5)如果校验该WAL页有效,将当前时间线curFileTLI记为日志页第一个记录中记录的时间线;否则若为主机则直接返回-1,备机的话切换到下一个日志源进行读取

目录
相关文章
|
3月前
|
存储 关系型数据库 MySQL
MySQL Change Buffer 深入解析:概念、原理及使用
MySQL Change Buffer 深入解析:概念、原理及使用
MySQL Change Buffer 深入解析:概念、原理及使用
|
3月前
|
缓存 关系型数据库 MySQL
MySQL Buffer Pool 解析:原理、组成及作用
MySQL Buffer Pool 解析:原理、组成及作用
|
3月前
|
存储 关系型数据库 MySQL
MySQL Doublewrite Buffer(双写缓冲区)深入解析:原理及作用
MySQL Doublewrite Buffer(双写缓冲区)深入解析:原理及作用
|
4月前
|
缓存 算法 安全
深入解析InnoDB的Buffer Pool
深入解析InnoDB的Buffer Pool
52 2
|
4月前
|
JavaScript 网络协议 数据处理
Node.js中的Buffer与Stream:深入解析与使用
【4月更文挑战第30天】本文深入解析了Node.js中的Buffer和Stream。Buffer是处理原始数据的全局对象,适用于TCP流和文件I/O,其大小在V8堆外分配。创建Buffer可通过`alloc`和`from`方法,它提供了读写、切片和转换等操作。Stream是处理流式数据的抽象接口,分为可读、可写、双工和转换四种类型,常用于处理大量数据而无需一次性加载到内存。通过监听事件和调用方法,如读取文件的可读流示例,可以实现高效的数据处理。理解和掌握Buffer及Stream能提升Node.js应用的性能。
|
内存技术
非易失性WAL buffer实现解析(五)
非易失性WAL buffer实现解析(五)
50 0
非易失性WAL buffer实现解析(三)
非易失性WAL buffer实现解析(三)
43 0
|
13天前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
1月前
|
存储 NoSQL Redis
redis 6源码解析之 object
redis 6源码解析之 object
52 6
|
2天前
|
开发工具
Flutter-AnimatedWidget组件源码解析
Flutter-AnimatedWidget组件源码解析

热门文章

最新文章

推荐镜像

更多