
预写日志(Write Ahead Log,WAL)是QianBase TP数据库中重要部分,它活跃在QianBase TP数据库各个功能模块,绝大多数数据库行为都会被记录在WAL日志中。当数据库中数据发生变更时,变更后的内容会被写入到wal buffer中,commit发生时,wal buffer中的数据被刷新到磁盘上WAL文件中。QianBase TP数据库中默认WAL文件大小为16M,当数据库中数据不断发生变更时,WAL文件会不断切换生成新文件。针对不断新生成的wal日志,QianBase TP数据库也是不停生成新WAL文件进行存储么?针对该问题,本文将介绍QianBase TP数据库WAL文件管理机制。
QianBase TP数据库中对WAL文件管理有2种机制,第1种是创建新WAL文件机制;第2种是删除与重用WAL文件机制。
创建新WAL文件机制
QianBase TP数据库未到checkpoint时间节点,由于当前数据库中数据发生变更导致需要更多WAL文件存储wal日志,则会在WAL文件总大小小于设置的max_wal_size时创建新文件,其原理如下所示:

当WAL文件WAL_7被填满后,则数据库创建新WAL文件WAL_8来存储数据库中新生成的wal日志。
针对创建新WAL文件机制,举例如下:
数据库中创建表并插入一些数据后,WAL文件个数为6个,如下图:

继续不断运行业务,两个新的WAL文件会被创建,WAL文件增加到8个,如下图所示:

删除与重用WAL文件机制
QianBase TP数据库执行checkpoint操作时,数据库会根据前一个checkpoint操作时消耗WAL文件数量估计并准备下一个checkpoint操作时所需的WAL Segment文件数量,checkpoint操作启动时,在保证总WAL文件大小小于设定的max_wal_size情况下,数据库会删除与重用WAL文件。其原理如下图所示:

由上图可知数据库执行checkpoint操作时,数据库对WAL文件管理有以下几步:
1)数据库执行checkpoint时,根据上一次checkpoint操作估计还需要一个WAL文件来存储wal日志
2)数据库执行checkpoint后,redo point恢复点位置在WAL_3文件,说明WAL_3之前的WAL_1和WAL_2两个WAL文件可以被删除或者重用
3)数据库删除WAL_2文件,将WAL_1文件改名为WAL_7继续用于存储新的wal日志
针对删除与重用WAL文件机制,举例如下:
当前数据库中编号最小的WAL文件如下图所示:

当前数据库正在写入的WAL文件如下图所示:

不断在数据库上执行业务,使得WAL文件个数不断增长,并在数据库中手动执行checkpoint操作。

执行完checkpoint操作后,数据库中当前最新WAL文件为00000001000000010000008C

但是检查数据库中WAL文件名称,发现WAL文件目录中已经存在编号大于00000001000000010000008C的WAL文件,并且这些WAL文件的创建时间小于系统当前时间,例如:
00000001000000020000000D 、000000010000000200000001、00000001000000020000000C

这是因为在数据库中执行checkpoint操作时,数据库会估计并准备下一个checkpoint操作所需WAL文件数量,数据库会删除与重用WAL文件,重用的文件会被改名然后等待使用。
综上可知,在QianBase TP数据库中,WAL文件数量会根据数据库的活动自适应变化,随着wal日志不断写入,WAL文件的估计数量和总大小会不断增加。如果WAL文件总大小超过设置的max_wal_size大小,则数据库会启动一个checkpoint操作,创建新的重做点redo point,将WAL文件删除与重用,始终仅保留数据库恢复所需的WAL文件而不会无限增长。
END
▼
往期精彩回顾
▼
易鲸捷简介
易鲸捷公司成立于2015年,专注于新一代融合型分布式数据库核心技术研发。公司核心团队源自天腾公司,曾创造过NonStopSQL等全球领先的数据库产品,核心技术完全自主可控。经过多年技术沉淀,易鲸捷已形成自主可控、国产可信、安全高效的三条完整分布式数据库产品线:QianBase xTP/QianBase TP/QianBase MPP,可面向不同行业应用提供完整的一站式解决方案,在金融、运营商、智能制造、5G等重点行业获得广泛应用。
网址:www.esgyn.cn

贵州易鲸捷信息技术有限公司 地址:贵阳市高新区长岭南路160号高科1号C座24楼 | |
北京易鲸捷信息技术有限公司 地址:北京市朝阳区大屯街道北苑路万科时代中心奥林A座10层 | |
上海易鲸捷信息技术有限公司 地址:上海市浦东新区金科路2889弄1号长泰广场A座6层03单元 | |
北京:010-84983409 | 上海:021-50822117 |
邮箱:info@esgyn.cn | 网址:www.esgyn.cn |





