PostgreSql源码阅读笔记9(参考husthxd在ITPUB的博客)

参考内容

PostgreSQL 源码解读(153)- 后台进程#5(walsender#1)
PostgreSQL 源码解读(154)- 后台进程#6(walsender#2)
PostgreSQL 源码解读(155)- 后台进程#7(walsender#3)

知识点:

数据库备份的种类:

  1. 按备份后的文件类型:
    • 物理备份:文件系统级别的备份
    • 逻辑备份:备份的是sql文件
  2. 按备份过程是否停止数据库服务:冷备份、热备份
  3. 按备份是否是完整数据库:全量备份、增量备份

pg 使用的是增量热备份。

pg 的时间线是一段日志,记录了开始的xlogid与结束的xlogid。

walsender 是 master 节点进程,standby 向 master 发送连接请求,master 的 postmaster 进程收到后启动 walsender 与 standby 节点的 walreceiver 通讯,用于传输 Wal Record

增量备份命令处理的入口:PostgreMain

在这里插入图片描述

备份检查与切换时间线函数 exec_replication_command

在这里插入图片描述

发送文件函数 WalSndSetState

在这里插入图片描述

参考内容

PostgreSQL 源码解读(158)-PG Tools#5(pg_basebackup:what does db server do)

当使用pg_basebackup命令进行全量备份时,postmaster启动新的postgres进程响应此请求,此进程被视为walsender,并执行SendBaseBackup,客户端会收到服务端的备份文件,这个过程如下:

  1. 把buffer内容备份到日志里
  2. 把缓存刷盘,并创建restartpoint
  3. 发送表文件(每次发送一块前要先对这一页的校验码执行校验)
  4. 发送wal日志文件
    在这里插入图片描述

参考内容

PostgreSQL 源码解读(159)-PG Tools#6(What does pg_rewind do)
主机变备机时,需要回滚和重做。主要是找到分叉点的位置,找到有更改的块,将原备机的相应块取过来。
在这里插入图片描述

参考内容

PostgreSQL 源码解读(160)- 查询#80(如何实现表达式解析)

表达式的执行是按照命令数组一条条执行的,不太复杂的逻辑直接编在代码里,复杂逻辑通过利用finfo进行函数调用实现,入口ExecInterpExpr
在这里插入图片描述
在这里插入图片描述

参考内容

PostgreSQL 源码解读(161)- 查询#81(如何构建表达式解析步骤#1)
PostgreSQL 源码解读(162)- 查询#81(如何构建表达式解析步骤#2)
PostgreSQL 源码解读(163)- 查询#81(如何构建表达式解析步骤#3)

构建表达式解析步骤:ExecBuildProjectionInfo

  1. 把执行步骤压栈包括:

    1. fetch 元组
    2. 根据元组信息计算表达式
    3. done
  2. 为相应计算节点绑定计算函数。
    在这里插入图片描述
    其中初始化节点时会把操作压栈:
    在这里插入图片描述
    组装finfo的过程 ExecInitFunc
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值