自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

InternalsOf

database/linux

  • 博客(432)
  • 资源 (6)
  • 收藏
  • 关注

原创 neon源码分析(7)SLRU WAL转KV

1. PG 的SLRU以CLOG为例,一个文件256KB作为一个SEG,一个SEG内有32个8KB页面,在REDO时,根据xid/32786定位SEG,xid%32定位PAGE,就可以进行REDO了。2. NEON 的核心工作就是把WAL转换写到KV存储,这里的KEY是SEGNO+PAGENO,V是XID、事务状态等信息。

2026-05-23 12:08:54 80

原创 neon源码分析(6)计算启动recovery阶段分析

neon计算启动recovery阶段分析

2026-05-08 23:45:00 315

原创 neon源码分析(5)计算层使用slru的一些问题

计算层使用slru的一些问题

2026-05-07 15:56:59 372

原创 neon源码分析(4)slru页面redo与pg的区别

CLOG Redo: Postgres vs Neon

2026-04-25 17:27:31 368

原创 Postgresql热迁移pgbench持续读写零中断

在两台真实机器上演示 QEMU Live Migration,VM 内运行 PostgreSQL,外部 pgbench 2 并发持续读写,迁移全程 **零失败事务**。证明 Neon 热迁移对 Postgres 连接完全透明。

2026-04-17 11:33:46 284

原创 QEMU网络配置2

QEMU 启动一个真实的 Alpine VM 并验证网络通信。

2026-04-17 11:32:47 223

原创 QEMU网络配置1

Linux 上为 QEMU 虚拟机搭建网络。

2026-04-17 11:32:01 264

原创 neon源码分析(3)写入流程

neon写入流程分析

2026-04-17 11:17:49 287

原创 QEMU CPU内存热插拔2

在 Kind 集群中运行一个 Pod,Pod 里跑 QEMU,通过 HTTP API 实现 CPU/内存热插拔。

2026-04-15 13:16:16 164

原创 QEMU CPU内存热插拔

QEMU CPU内存热插拔

2026-04-15 12:27:04 369

原创 neon源码分析(2)覆盖图快照结构

本文展开讲解 `LayerMap::historic` 内部的所有数据结构及其协作关系

2026-04-15 12:24:43 630

原创 neon源码分析(1)选择layer(range_search)

选择layer(range_search)

2026-04-15 12:23:30 373

原创 hermes与hindsight

hermes终端里运行的AI Agent,用你配置的LLM作为大脑,通过工具跑命令、读写文件、操作浏览器、委派子 Agent,类似claw、claudecode等agent工具。

2026-04-15 12:20:23 1509 1

原创 Postgresql源码(158)pg_filenode.map文件作用relmap和redo流程(RM_RELMAP_ID = 7)

pg_filenode.map文件的作用和redo流程分析。

2026-03-10 23:06:26 639

原创 Postgresql源码(157)Redo系列MultiXact Redo (RM_MULTIXACT_ID = 6)

MultiXact Redo机制分析。

2026-03-10 21:15:00 580

原创 Postgresql源码(156)MultiXact机制分析

MultiXact机制分析

2026-03-09 23:39:56 482

原创 Postgresql源码(155)Redo系列CLOG Redo (RM_CLOG_ID = 3)

RM_CLOG_ID处理的是PG提交日志的修改。CLOG记录每个事务的最终状态(in_progress/committed/aborted/sub_committed),存储在 `pg_xact/` 目录下的 SLRU 文件中。

2026-03-09 21:30:00 609

原创 Postgresql源码(154)Redo系列Storage Redo (RM_SMGR_ID = 2)

RM_SMGR_ID处理的是PG的文件层修改,调用smgr提供的接口干活。只做创建 和 truncate,不做文件删除。不做删除的原因是:**只有在事务成功提交才能物理删除文件;如果事务回滚,文件必须保留。** redo机制需要旧的基础页面+新的日志,如果是页面比日志新,就玩不转了。

2026-03-09 15:11:20 443

原创 Postgresql源码(153)Redo系列XLOG (RM_XLOG_ID = 0)

postgresql备库调试RM_XLOG_ID的redo流程

2026-03-08 11:26:01 479

原创 Postgresql源码(152)Transaction Redo (RM_XACT_ID = 1)

RM_XACT_ID

2026-03-08 10:15:25 72

原创 Postgresql源码(151)深入分析lsn

postgresql中lsn的概念分析

2026-03-07 21:21:23 459

原创 Postgresql源码(150)wal二进制格式分析

postgresql wal字节流解析

2026-03-02 18:56:20 603 1

原创 MySQL源码(3)异步IO核心逻辑简化调试(对比PG)

本文对比了MySQL InnoDB与PostgreSQL的刷脏机制差异。InnoDB采用异步IO(LIBAIO+O_DIRECT)持续刷脏,通过io_submit提交请求后由后台线程io_getevents收割结果,配合fsync确保数据落盘,性能更平稳。PostgreSQL则依赖双缓冲机制,通过write()+fsync()批量刷脏,易造成I/O毛刺。测试案例展示了O_DIRECT模式绕过page cache直接落盘,而缓冲I/O需依赖fsync同步刷盘。

2026-02-24 17:26:29 670

原创 MySQL源码(2)同步io相关模块行为

同步io相关模块行为分析

2026-02-12 16:04:22 616

原创 MySQL源码(1)写盘流程总览

MySQL的INSERT操作流程主要分为七个阶段:1)SQL协议层接收与分发,处理客户端命令;2)SQL解析与重写,进行语法分析和查询重写;3)SQL执行层,执行权限检查、表锁定和DML操作;4)InnoDB存储引擎插入,转换行格式并处理事务;5)B+树插入与Undo日志记录;6)事务提交,处理Binlog组提交和InnoDB提交;7)脏页刷盘,通过Page Cleaner线程和Doublewrite机制确保数据持久性。整个过程涉及redo log、undo log、binlog等多种日志机制,以及buff

2026-02-11 16:13:06 608

原创 LlamaIndex实用入门案例(可执行)

LlamaIndex实用入门案例(RAG/AGENT可执行)

2026-01-30 21:55:03 335

原创 mysql参数explicit_defaults_for_timestamp问题

explicit_defaults_for_timestamp = OFF是第一列的行为非常奇葩,而且会影响后面的表列。

2025-12-19 16:07:27 450

原创 Overlay网络搭建实战

- 搭建Overlay虚拟网络的常见方式是gre、IPIP。- 隧道IP必须配置对应的隧道协议才能传输,其他机器必须配置对应的隧道才能访问。- PostgreSQL绑定隧道IP后,可支持通过物理IP和Overlay IP多地址访问。

2025-11-18 10:59:24 527

原创 结合PG分析进程数过多时的表现与协程优化效果实测

结合PG分析进程数过多时的表现与协程优化效果实测

2025-11-13 19:52:08 903

原创 mysql主备配置(对比postgresql)

mysql主流模式是逻辑复制,下面的区别其实就是逻辑和物理复制的区别。

2025-11-11 16:48:54 885 1

原创 Postgresql源码(149)SIMD应用与性能测试

SIMD技术在PG中的应用 与 SIMD性能测试

2025-10-05 19:28:47 498

原创 OpenTenBase源码(2)三种数据重分布方式举例

OpenTenBase执行器是pull模型的分布式加强版本,主要做了针对分布式优化。**为了获取最大并行度,将计划切为Remote Subquery Scan,发到dn的不同进程上执行。**

2025-09-28 17:21:29 303

原创 Postgresql源码(148)hash表的调试方法与技巧

处理实际问题时,经常需要调试hash表,例如需要gdb查看hash表中的数据结构等等。本篇结合实例给出一些使用方法技巧,后续遇到问题可以快速通过gdb查看hash表内容。

2025-08-11 16:52:50 504

原创 Postgresql源码(147)Nestloop流程与Instrumentation简单分析

摘要:NestLoop连接算法采用双层循环结构,外层遍历外表元组,内层遍历内表元组。每对元组需先通过ON条件,再检查WHERE条件。支持参数化内表查询,可将外表字段值传递给内表。执行流程包括:获取外表元组→参数化内表→重扫描内表→获取内表元组→处理未匹配的LEFT/ANTI JOIN→检查连接条件→返回符合条件的结果。EXPLAIN ANALYZE通过InstrStart/StopNode记录执行时间和处理元组数。

2025-07-15 16:26:14 1025

原创 Postgresql源码(146)二进制文件格式分析

PostgreSQL在Linux平台生成ELF格式的可执行文件,通过readelf和gdb工具可分析其结构。

2025-06-05 17:22:59 878

原创 Postgresql源码(145)优化器nestloop评估不准问题分析

最近遇到一个问题,评估行数和真实行数存在较大差距,导致计划不准的问题。nestloop内表评估是根据外表的参数来的。因为外表驱动表每取一条,内表才能做查询。所以这里外表的一条数据对内表来说就是参数。内表使用参数化路径来评估行数。本篇针对这个实例对参数化路径行数评估做一些分析。

2025-05-01 11:23:50 1339

原创 Postgresql源码(144)LockRelease常规锁释放流程分析

最新遇到一个共享内存损坏导致常规锁释放报错warning "you don't own a lock of type"的问题。本篇对常规锁的概念做一些回顾,顺便分析下释放锁的流程。

2025-04-30 15:18:35 1050

原创 Postgresql源码(143)统计信息基础知识(带实例)

统计信息基础知识

2025-04-24 21:28:05 987

原创 git rebase复杂场景验证

经常面临复杂的分支管理,这里对几种场景的行为做一些验证。

2025-04-07 22:39:48 784

原创 C语言传参寄存器压栈流程总结

C语言传参使用寄存器+压栈的方式,这里对传参的细节流程做一些分析记录。

2025-04-07 19:13:02 863

oracle core essential internals for dbas and developers

Oracle核心技术英文原版,非常不好找的一本书。 原书名:《oracle core essential internals for dbas and developers》

2024-05-30

bcc tools+火焰图两件套

bcc tools+火焰图两件套

2024-03-21

C++Primier(高清版本带书签免解压密码)

C++Primier(高清版本带书签免解压密码),高清版本,带书签,免解压密码

2019-05-05

数据库系统实现(高清带书签免解压密码)

数据库系统实现(高清带书签免解压密码),高清版本,免解压密码

2019-05-04

算法导论第三版(高清带目录书签无解压密码)

算法导论第三版(高清带书签无解压密码),压缩包没有解压密码

2019-06-07

Leetcode题解(官方出品)

Leetcode题解(官方出品),官方网站付费申请才能买到,无密码解压。

2019-04-21

MySQL技术内幕第五版(高清带书签免解压密码)

MySQL技术内幕第五版(高清带书签),高清版本,平板上看体验比纸质书好

2019-05-05

Java编程思想第四版4th(高清带书签无解压密码)

Java编程思想第四版4th(高清带书签无解压密码),高清版本,没有解压密码

2019-06-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除