标签
内容简介
本书是国内较早系统剖析开源关系数据库 PostgreSQL 内核实现的中文专著。作者以 PostgreSQL 8.4.1 的源代码为分析对象,按数据库体系结构的层次依次展开:从系统表与数据集簇的初始化过程入手,说明 initdb 如何生成模板数据库与系统目录;继而梳理守护进程 Postmaster、各类辅助进程(系统日志、后台写、WAL 写、归档、自动清理、统计收集)与服务进程 Postgres 的协作方式,还原一条简单查询从连接接入到结果返回的完整流程。 在存储层面,书中讲解了表和元组在外存上的组织方式、虚拟文件描述符(VFD)机制、空闲空间映射表与可见性映射表、大对象存储,以及内存上下文、共享缓冲池与 IPC 等内存管理设施,并专章讨论 VACUUM 机制下的 Lazy VACUUM 与 Full VACUUM,以及 ResourceOwner 资源跟踪。此后依次进入索引机制、查询编译(解析与重写、查询树生成)、查询执行(执行器与计划节点)、并发控制(事务、MVCC 与锁)以及安全模块。 全书并不逐行注释代码,而是从设计者视角说明各模块如何配合实现功能,配合大量数据结构示意与流程图,使读者建立对真实数据库管理系统运行机理的整体认识。书中附录还给出在 Eclipse 中搭建源码阅读与调试环境的方法,方便读者对照代码实践。本书内容基于 PostgreSQL 8.4 系列,与当前版本在部分实现细节上已有差异,但核心架构与机制仍有参考价值。
编辑推荐
在中文 PostgreSQL 读物里,这本书的位置相当特殊:它不是教你怎么写 SQL、怎么调参数,而是把“数据库为什么这样运行”拆开给你看。作者彭智勇、彭煜玮在武汉大学长期开设“数据库内核分析”课程,本书正是这门课十年打磨的产物,因此结构上带有明显的教学顺序——先立起进程与内存的整体骨架,再逐层深入存储、索引、查询与并发,读者不容易在源码森林里迷路。 它的另一大优点是“讲配合”而非“讲代码”。书中大量使用数据结构示意图和流程图,说明各模块之间如何衔接,比如一条查询如何被解析成查询树、如何进入执行器,VACUUM 与可见性映射表之间是什么关系。这种视角对想读懂源码却屡屡卡住的人很有帮助。 需要提醒的是,本书基于 PostgreSQL 8.4.1,属于较早期的版本,之后的版本在并行查询、分区表、WAL 与复制等方面变化很大。把它当作建立内核心智模型的入门阶梯,再配合新版源码与官方文档阅读,效果最好。对于国内数据库内核方向的学习者和自研数据库团队,它仍是一本值得放在案头的“地图式”参考书。
适合谁读
适合
- 已掌握 SQL 与数据库基本理论、想进一步理解实现机制的中高级开发者
- 计算机专业数据库方向的高年级本科生与研究生,可作为“数据库内核分析”课程参考书
- 从事数据库产品研发、需要在 PostgreSQL 之上做定制或扩展的工程师
- 需要验证数据库新技术、希望找到可对照开源实现的研究人员
不适合
- 零基础想学 SQL 或 PostgreSQL 日常使用的初学者
- 只关心运维调优、备份恢复与高可用部署的 DBA
- 希望学习 PostgreSQL 最新版本特性(如并行查询、逻辑复制)的读者
阅读建议
- 先读第1—2章建立进程、内存与数据集簇的整体框架,再按存储、索引、查询、并发的顺序推进。
- 对照 PostgreSQL 8.4 源码边读边看,按书中给出的函数名与结构体在代码中定位,并动手编译调试。
- 注意版本差异:遇到 WAL、复制、并行查询等内容,可用新版官方文档与源码补充校正。
- 每章读完后用自己的话画一张模块协作图,检验是否真正理解了数据与控制流。
出版社简介
机械工业出版社
中国 · 成立于 1950 年
机械工业出版社(China Machine Press)在科技与专业出版之外,库内图书还体现出对心理学、计算机、管理、财经与社科等方向的持续关注。心理学方面收入荣格作品及分析心理学导论,并涉及压力与健康、成瘾与疗愈等应用议题;计算机领域有《计算机程序的构造和解释(JavaScript版)》;管理与财经类包括《管理行为(原书第4版)》《不平等的代价(珍藏版)》《这次不一样:八百年金融危机史(纪念版)》;科学哲学与科学史方面则有《世界观(原书第3版)》。相关作者资源涵盖C.G.荣格、威廉·麦圭尔、索努·沙姆达萨尼、加博尔·马泰等。公开资料有限,以上仅据库内图书归纳其出版面貌。
目录
- 前言
- 第1章 PostgreSQL系统概述(简介及发展历程、特性、应用、代码结构、安装、数据库命令)
- 第2章 PostgreSQL的体系结构(系统表与系统视图、数据集簇与initdb、进程结构、守护进程Postmaster、辅助进程、服务进程Postgres、简单查询执行流程)
- 第3章 存储管理(存储管理器体系结构、外存管理、VFD机制、空闲空间映射表、可见性映射表、大数据存储、内存上下文、高速缓存与缓冲池管理、IPC、表与元组操作、VACUUM机制、ResourceOwner资源跟踪)
- 第4章 索引机制
- 第5章 查询编译
- 第6章 查询执行
- 第7章 并发控制
- 第8章 安全
- 附录 基于Eclipse的PostgreSQL源码开发与调试
常见问题
这本书适合零基础学 PostgreSQL 吗?
不适合。本书从源码出发解析内核实现,默认读者已具备数据库原理、操作系统与 C 语言基础,零基础读者建议先学习 SQL 与 PostgreSQL 使用类书籍。
书中的内容对应哪个 PostgreSQL 版本?
书中分析基于 PostgreSQL 8.4.1 源码。整体架构与核心机制仍有参考价值,但并行查询、分区表、复制等后续特性未涉及。
读这本书需要会 C 语言吗?
需要具备基本的 C 语言阅读能力。书中大量引用结构体、指针与函数调用关系,不会 C 语言会明显影响理解效率。
书里有讲源码调试环境搭建吗?
有。书中附有在 Eclipse 中开发与调试 PostgreSQL 源码的指导,方便读者对照代码实际动手跟踪执行流程。
这本书和《PostgreSQL技术内幕》有什么区别?
本书覆盖面更广,按体系结构讲存储、索引、查询、并发与安全;后者聚焦查询优化器单一模块,且基于更新的版本。
读者评论
查询本书
本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。