-
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 语言内存空间和磁盘状态机中引发极其致命的物理崩溃。 我们直接下潜到操作 ...