PostgreSQL 是一个开源的多用途关系数据库系统,在世界各地广泛使用。它是一个集成了子系统的庞大系统,每个系统都有一个特殊的复杂功能,并且可以相互协作。对内部机制的理解对于使用 PostgreSQL 进行管理和集成至关重要,本书从内核逻辑层面展现了 PostgreSQL 的全貌,并详细分析了 PostgreSQL 数据库的进程与内存体系结构,并发控制的原理及多种场景的流程、内存管理机制、预写日志的文件结构、流复制等多个子系统的的原理细节。本书介绍了 PostgreSQL 内部的工作原理,包括数据库对象的逻辑组织与物理实现,进程与内存的架构。并依次剖析了几个重要的子系统:查询处理、外部数据包装器、并发控制、清理过程、缓冲 区管理、WAL、备份及流复制。本书为 DBA 与系统开发者提供了一幅全景概念地图,有助于读者形 成对数据库实现的整体认识,亦可作为深入学习 PostgreSQL 源代码的导读手册,对于理解数据库原 理与 PostgreSQL 内部实现大有裨益。 本书适合数据库开发人员及相关领域的研究人员、数据库 DBA 及高等院校相关专业的学生阅读。
本书辅以大量配图,将复杂概念图形化,对于读者理解复杂的原理有很大的帮助作用。
冯若航
PostgreSQL DBA,全栈工程师。PostgreSQL与Golang布道者,活跃于PostgreSQL技术社区,致力于企业PostgreSQL培训与技术支持。
刘阳明
毕业于中国人民大学信息学院,对数据库内核有浓厚兴趣,有丰富的PostgreSQL管理与使用经验,坚信PostgreSQL是一个还未被大众了解的优秀数据库产品,坚持推动PostgreSQL的发展。
张文升
参与了《PostgreSQL实战》一书的写作,中国开源软件推进联盟PostgreSQL分会核心成员之一。常年活跃于PostgreSQL、MySQL、Redis等开源技术社区,坚持推动PostgreSQL在中国的发展,多次参与组织PostgreSQL全国用户大会。近年来致力于企业PostgreSQL培训与技术支持。
137页中
原文:为了移除死元组,清理过程有两种模式,分别是并发清理与完整清理。清理过程会删除表文件每个页面中的死元组。
应更改为:为了移除死元组,清理过程有两种模式,分别是并发清理与完整清理。并发清理会删除表文件每个页面中的死元组。
167页中的io_in_pregr ess_lock 此处多了一个空格,应该为io_in_pregress_lock
11.3.3 发生故障时的行为
“主库将暂停从失效点到成功替换同步备库之间的查询处理”这里是不是应该改成“事务处理”?
118页 T3和T5的描述应该是:
执行txid=200和201的事物的select命令
,1