帮您理解PostgreSQL(WAL、XLOG、CheckPoint进程、LSN、PITR、SR)

一、WAL、XLOG、LSN

在计算机领域,WAL是Write Ahead Logging的缩写,指将变更、行为先写入事务日志的协议和规则。
在PostgreSQL中,WAL是Write Ahead Log的缩写,它就是事务日志。PostgreSQL将所有修改作为历史数据写入持久化存储中,这份数据被称为XLOG记录或WAL数据。
当插入、删除、提交等变更动作发生时,pg会将xlog记录写入内存的WAL缓冲区(几乎所有的DBMS都实现了共享缓冲区,为了高效访问),一般当事务提交或中止时,它们会被立即写入持久化存储的WAL段文件中,XLOG记录的日志序列化(Log Sequence Number,LSN)标识了该记录在事务日志中的位置,LSN被用作XLOG的唯一标识符
XLOG是一种重做日志

二、检查点进程与pg_control文件-负责脏页刷盘、数据库恢复

插入数据时(脏页刷盘)

  1. 检查点进程是一个后台程序,定期执行检查点(某些条件下,如间隔300s或wal段文件的数量或大小超过参数值),检查点进程启动时,它会向当前WAL日志写入一条XLOG记录,包含最新的重做点位置。
  2. 当发起第一条INSERT语句时,PostgreSQL从数据库集簇文件(磁盘上)中加载表A的页面到内存的共享缓冲池,向页面中插入一条元组,在LSN_1的位置创建并写入XLOG记录,再讲表LSN_0更新为LSN_1。
  3. 当该事务提交时,PostgreSQL向WAL缓冲区创建并写入一条关于该提交行为的XLOG记录,再将WAL缓冲区中的所有XLOG记录写入WAL段文件(磁盘上)
  4. 当发起第二条INSERT语句时,PG向页面中插入一条新元组,然后再LSN_2位置创建并写入一条XLOG记录,最后将表A的LSN从LSN_1更新到LSN2。
  5. 当第二条语句的事务提交时,重复步骤3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值