WAL Write AheadLog
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相关推荐
- Rocksdb 写流程,读流程,WAL文件,MANIFEST文件,ColumnFamily,Memtable,SST文件原理详解
文章目录 前言 Rocksdb写流程图 WAL 原理分析 概述 文件格式 查看WAL的工具 创建WAL 清理WAL MANIFEST原理分析 概述 查看MANIFEST的工具 创建 及 清除 MANI ...
- 预写式日志(Write-Ahead Logging (WAL))
SQL Server中使用了WAL(Write-Ahead Logging)技术来保证事务日志的ACID特性.而且大大减少了IO操作. WAL的核心思想是:在数据写入到数据库之前,先写入到日志.再将日 ...
- checkpoint process vs writer process vs wal writer process
开始 我目前的理解是: 如果我执行了一条SQL文,那么 先是相关数据写到 wal buffer里, 然后再写到 data buffer(shared_buffer)里. 这之后, 由于wal wr ...
- GRDB使用SQLite的WAL模式
GRDB使用SQLite的WAL模式 WAL全称是Write Ahead Logging,它是SQLite中实现原子事务的一种机制.该模式是从SQLite 3.7.0版本引入的.再此之前,SQLite ...
- (2.4)备份与还原--WAL与备份原理
预写式日志(Write-Ahead Logging (WAL)) 部分转自:http://www.cnblogs.com/wenBlog/p/4423497.html SQL Server中使用了WA ...
- 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 ...
- PostgreSQL 恢复模式错误日志增强 - 提供正在恢复的WAL(XLOG)文件位置
标签 PostgreSQL , the database system is starting up , the database system is in recovery mode 背景 当数据库 ...
- pg 10 wal 归档同步配置
一.rsync server(172.16.3.226) CentOS 7.2 X64 # yum install -y rsync # mkdir -p -m 0700 /db/wal_archiv ...
- PostgreSQL 10.1 手册_部分 III. 服务器管理_第 30 章 可靠性和预写式日志_30.5. WAL内部...
30.5. WAL内部 WAL是自动被启用的.除了做一些设置满足存放WAL日志的磁盘空间需求以及一些必要的调节以外(参阅第 30.4 节),对管理员没有什么其他要求. 当每个新记录被写入时,WAL记录 ...
最新文章
- iview日期选择器更改显示日期书_如何动态 设置 iview DatePicker 控件的 禁用日期(option)...
- html怎么去掉背景颜色,word背景颜色怎么去掉
- esp32树莓派_用 ESP32 制造炫彩 LED 球
- php底层实现也是c语言,深入php内核,从底层c语言剖析php实现原理
- java 没有提示信息,ActionErrors没有提示信息
- Spring @Lazy批注用例
- react项目 npm run eject报错
- 【python】继承时注意事项
- 前端脚本API发布 | Java 开源企业信息化建设平台O2OA平台
- NHibernate初探(五) 多对多关系测试示例
- include 头文件循环引用问题
- java ehcache使用_ehcache使用报错
- 利用百度API进行淘宝评论关键词提取
- cd rom是计算机的,CD-ROM是什么意思,CD-ROM是什么意思
- DUBBO服务为null的情况
- Hex Fiend很强大
- 今日恐慌与贪婪指数为22 恐慌程度有所缓解
- UUCTF(公共赛道)
- 骑士CMS4.1.23本地包含漏洞
- JavaScript学习笔记(6)变量