一、WAL日志应用
WAL日志应用在以下场景:
Change发生时:
先将变更后内容记入WAL Buffer 再将更新后的数据写入Data Buffer
Commit发生时:
WAL Buffer刷新到Disk Data Buffer写磁盘推迟
Checkpoint发生时:
将所有Data Buffer刷新到磁盘
二、Wal日志功能
通过上面的分析,可以看到
1、当宕机发生时
Data Buffer的内容还没有全部写入到永久存储中,数据丢失;
但是WAL Buffer的内容已写入磁盘,根据WAL日志的内容,可以恢复数据库丢失的内容
2、在提交时,仅把WAL刷新到了磁盘,而不是Data刷新:
从IO次数来说,WAL刷新是少量IO,Data刷新是大量IO,WAL刷新次数少得多
从IO花销来说,WAL刷新是连续IO,Data刷新是随机IO,WAL刷新花销小得多
因此WAL机制在保证事务持久性和数据完整性的同时,成功地提升了系统性能
三、WAL日志文件
整页写 (Full Page Write)
假设因为操作系统在fsync脏页的过程中出现故障,导致TABLE_A存储上的页面数据损坏,由于 XLOG记录无法在损坏的页面上重放,因此我们需要额外的操作
KingbaseES支持一项称为整页写(FPW)的功能,以处理此类故障。如果启用,KinbaseES 将在每个检查点后每个页面的第一次更改中将页面头部数据和整个页面作为 XLOG记录写入。KinbaseES默认已启用整页写。在 KingbaseES中,包含整个页面的此类 XLOG 记录称为备份块 (或整页镜像)
整页写 (Full Page Write) 恢复过程
1