-
关于LSN的两个问题:
1. 假如一个数据页100行记录,是不是每对其中的任意一行记录做修改都要生成 WAL日志,wal日志生成后立刻把此刻的lsn 写入到 数据 页头部的pd_lsn里面,如果是这样,那修改100行记录,就要把数据页头部的 pd_lsn修改100次, 那最后这个脏页的 pd_lsn值究竟这么确定??? 核心真相一:pd_lsn 的物理本质是“高水位线 ...
-
lsn的结构:
第一层:LSN 的源码级真身(它到底是个什么变量?) 在 C 语言结构体层面,LSN 没有任何花哨的设计,它是极度纯粹的暴力美学。 1. 核心定义 (XLogRecPtr) C /* src/include/access/xlogdefs.h */ typedef uint64 XLogRecPtr; 物理本质:它就是一个 64 位的无符号整型。 架构定性:它代表的是自数 ...
-
checkpoint机制的盲区
终极盲区一:谁在替 Checkpoint 负重前行?(bgwriter 进程的暗中协助) 面试官的陷阱:“既然 Checkpoint 是每 5 分钟才爆发一次大扫除,那在这 5 分钟内,内存里的脏页越积越多,难道就任由它堆积,直到 Checkpoint 瞬间被压垮吗?” 你的底层反杀(LRU 算法与分工机制): “绝不能任由它堆积!在 checkpointer ...
-
WAL日志的结构,深入结构体分析
一: 结构: WAL日志的结构: ================================================================================【 宏观容器 】 16MB WAL Segment File (例: 000000010000000000000001)================================================================================│├─【 切片 0 】 WAL Page 0 (严格 ...
-
\copy工具相关
维度一:物理空间的绝对隔离(破除“同构”幻觉) 90% 的初学者认为 \copy 和大写的 COPY 是一回事,只是多加了一个反斜杠。这是极其致命的底层认知错误。 执行实体的错位:当你敲下带有反斜杠的 \copy 时,服务端的 PostgreSQL 内核其实是**完全“致盲”**的。真正在执行第一步动作的,是你本地电脑(或跳板机)上 ...
-
\copy 和 COPY 的区别
第一关:城门鉴权(数据从哪来?谁去搬?)—— COPY 与 \copy 的分化 1000 万行数据现在正躺在一个 CSV 文件里,准备进入数据库这座“城池”。 如果使用大写的 COPY(城内提货): 逻辑推演:这是城内守将(服务端的 Backend C 语言进程)亲自去搬。他直接走向城内自己的仓库(数据库服务器的本地磁盘)。 物 ...
-
pg_restore工具恢复数据的原理
一: 白话版本 把这几百 GB 的备份文件想象成一个巨大的实心大铁块(二进制文件)。你要把它极其快速地塞回数据库里。 pg_restore(带 -j 多进程并发和 -Fc 格式)的恢复过程,就是 pg_dump 的绝对物理逆向播放。我们按照电脑的“内存(RAM)”和“硬盘(Disk)”流转,慢动作推演这五个物理阶段: 第一阶段:读 ...
-
PostgreSQL 内核绝对不允许跨越多个 Backend 进程来共享同一个活跃的事务 ID(XID)进行写入。这在共享内存的锁管理器和 MVCC 状态机中是物理悖论。 逻辑推导
这是一个直击 PostgreSQL 架构最底层边界的绝佳问题。 在 PostgreSQL 的多进程架构(Process-per-Connection)中,如果允许多个操作系统层面的 Backend 进程共享同一个事务 ID(XID)进行全并发写入,这不仅是逻辑上的错误,更是会在 C 语言内存空间和磁盘状态机中引发极其致命的物理崩溃。 我们直接下潜到操作 ...
-
pg数据库 哈希表体系的分类
在 PostgreSQL 和 openGauss 的 C 语言内核中,哈希表(Hash Table)是抹平 CPU 算力与海量数据之间鸿沟的绝对主力数据结构。如果不建立起一套严密的哈希表分类体系,你在排查诸如“CPU 为什么自旋打满”、“查询为什么突然爆内存(OOM)”这类 P0 级故障时,就会彻底失去物理方向。 我们将抛开所有表象,严格按照**“物 ...
-
pg_dump工具的工作原理
pg_dump工具作为一个纯只读客户端进程,是如何通过一系列 SQL 指令和内核底层的调度器、锁管理器以及 I/O 子系统进行交互的。 以下是剥离一切包装后,pg_dump 从启动到结束的纯技术逻辑推导全流程: 第一步:锁定全局物理时间线(获取一致性快照) 逻辑起因:备份 TB 级别的数据需要消耗数小时物理时间 ...