WAL即 Write Ahead Log,WAL的主要意思是说在将元数据的变更操作写入磁盘之前,先预先写入到一个log文件中

磁盘读取分为顺序读取和随机读取
内存读取也有顺序读取和随机读取
下图是磁盘,内存 顺序和随机读取的效率表

一般来说内存读取速度要比磁盘读取速度快一个数量级

上图可以看出如果是顺序读取磁盘其速度堪比内存随机读取

WAL原理
通过cache合并多条写操作为一条,减少IO次数
日志顺序追加性能远高于数据随机写.
随机内存处理性能远高于数据随机处理.

性能:顺序的日志磁盘处理+随机的数据内存处理>随机的数据磁盘处理

使用 WAL 的数据库系统不会再每执行一条 WAL 操作就将数据刷入数据库文件中,一般积累一定的量然后批量写入,通常使用页为单位,这是磁盘的写入单位。 同步页缓存和数据库文件的行为被称为 checkpoint(检查点),一般在 page cache积累到一定页数修改的时候;当然,有些系统也可以手动执行 checkpoint。执行 checkpoint 之后,page cache可以被清空,这样可以保证page cache不会因为太大而性能下降。Checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复)

当系统内存不足时,Lazy writer会自动触发,Lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存。

基本上所有的数据库都会有 WAL 类似的设计,例如 MySQL 的 Innodb redo log 等等

WAL Write AheadLog相关推荐

  1. Rocksdb 写流程,读流程,WAL文件,MANIFEST文件,ColumnFamily,Memtable,SST文件原理详解

    文章目录 前言 Rocksdb写流程图 WAL 原理分析 概述 文件格式 查看WAL的工具 创建WAL 清理WAL MANIFEST原理分析 概述 查看MANIFEST的工具 创建 及 清除 MANI ...

  2. 预写式日志(Write-Ahead Logging (WAL))

    SQL Server中使用了WAL(Write-Ahead Logging)技术来保证事务日志的ACID特性.而且大大减少了IO操作. WAL的核心思想是:在数据写入到数据库之前,先写入到日志.再将日 ...

  3. checkpoint process vs writer process vs wal writer process

    开始 我目前的理解是: 如果我执行了一条SQL文,那么 先是相关数据写到  wal buffer里, 然后再写到 data  buffer(shared_buffer)里. 这之后, 由于wal wr ...

  4. GRDB使用SQLite的WAL模式

    GRDB使用SQLite的WAL模式 WAL全称是Write Ahead Logging,它是SQLite中实现原子事务的一种机制.该模式是从SQLite 3.7.0版本引入的.再此之前,SQLite ...

  5. (2.4)备份与还原--WAL与备份原理

    预写式日志(Write-Ahead Logging (WAL)) 部分转自:http://www.cnblogs.com/wenBlog/p/4423497.html SQL Server中使用了WA ...

  6. WAL streaming (max_wal_senders 0) requires wal_level replica or logical

    初次使用pg的11版本,执行以下操作修改归wal_level设置: alter system set set wal_level='minimal'; 尝试重启pg,发现重启失败,并报错: waiti ...

  7. PostgreSQL 恢复模式错误日志增强 - 提供正在恢复的WAL(XLOG)文件位置

    标签 PostgreSQL , the database system is starting up , the database system is in recovery mode 背景 当数据库 ...

  8. pg 10 wal 归档同步配置

    一.rsync server(172.16.3.226) CentOS 7.2 X64 # yum install -y rsync # mkdir -p -m 0700 /db/wal_archiv ...

  9. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 30 章 可靠性和预写式日志_30.5. WAL内部...

    30.5. WAL内部 WAL是自动被启用的.除了做一些设置满足存放WAL日志的磁盘空间需求以及一些必要的调节以外(参阅第 30.4 节),对管理员没有什么其他要求. 当每个新记录被写入时,WAL记录 ...

最新文章

  1. iview日期选择器更改显示日期书_如何动态 设置 iview DatePicker 控件的 禁用日期(option)...
  2. html怎么去掉背景颜色,word背景颜色怎么去掉
  3. esp32树莓派_用 ESP32 制造炫彩 LED 球
  4. php底层实现也是c语言,深入php内核,从底层c语言剖析php实现原理
  5. java 没有提示信息,ActionErrors没有提示信息
  6. Spring @Lazy批注用例
  7. react项目 npm run eject报错
  8. 【python】继承时注意事项
  9. 前端脚本API发布 | Java 开源企业信息化建设平台O2OA平台
  10. NHibernate初探(五) 多对多关系测试示例
  11. include 头文件循环引用问题
  12. java ehcache使用_ehcache使用报错
  13. 利用百度API进行淘宝评论关键词提取
  14. cd rom是计算机的,CD-ROM是什么意思,CD-ROM是什么意思
  15. DUBBO服务为null的情况
  16. Hex Fiend很强大
  17. 今日恐慌与贪婪指数为22 恐慌程度有所缓解
  18. UUCTF(公共赛道)
  19. 骑士CMS4.1.23本地包含漏洞
  20. JavaScript学习笔记(6)变量

热门文章

  1. 个人头像人工智能生成工具,上线一天就已赚了1万美金
  2. 神州路由器DHCPv6配置
  3. 滴滴java开发面经,滴滴三面面经JAVA面经
  4. 数控加工插补功能指令
  5. DataGear 国产开源BI
  6. oracle存档模式,oracle归档模式管理
  7. 区块链的发展及优缺点
  8. 在WPS中提取出的照片在哪找_WPS会员签到领,不香吗?
  9. 【Unity】碰撞后缩小比例并与碰撞目标紧贴(吸附效果)
  10. DNAT(目的地址转换)-IP映射和端口映射