标题：PostgreSQL数据库内核分析
出版信息
ISBN：9787111359050  　　定价：79.00元
作者：彭智勇 等
出版社：机械工业出版社
图书策划公司：北京华章图文信息有限公司
出版时间：2011年11月 版次：1-1开本：16
内容简介
PostgreSQL是目前广泛应用的开源数据库管理系统。本书从PostgreSQL数据库的源代码入手，深入分析了该数据库管理系统的底层实现细节，揭示了数据库运行的基本原理。本书的主要内容包括：PostgreSQL数据库的体系结构、 存储管理、索引机制、查询编译、查询执行、并发控制机制以及安全等。每个主题都引用了大量的数据结构、图表等进行说明，使读者对实现过程和机理一目了然。
作者简介
彭智勇：武汉大学计算机学院教授，博士生导师，日本京都大学博士，武汉大学珞珈特聘教授，中国计算机学会数据库专业委员会委员，长期从事数据库理论与技术的研究和教学工作。在武汉大学开设了“数据库基础教程”、“数据库系统实现”、“数据库内核分析”等数据库系列课程。 彭煜玮：武汉大学计算机学院讲师、博士，长期从事数据库理论与技术研究以及教学工作，主要负责“数据库内核分析”等课程的实践教学工作。
目录
前 言 
第1章 PostgreSQL系统概述/1 
1.1 PostgreSQL简介及发展历程/1 
1.2 PostgreSQL的特性/2 
1.3 PostgreSQL的应用/3 
1.4 PostgreSQL代码结构/3 
1.5 安装PostgreSQL/4 
1.6 PostgreSQL数据库命令/5 
第2章 PostgreSQL的体系结构/7 
2.1 系统表/8 
2.1.1 主要系统表功能及依赖关系/8 
2.1.2 系统视图/14 
2.2 数据集簇/15 
2.2.1 initdb的使用/17 
2.2.2 postgres.bki/17 
2.2.3 initdb的执行过程/19 
2.2.4 系统数据库/20 
2.3 PostgreSQL进程结构/21 
2.4 守护进程Postmaster/22 
2.4.1 初始化内存上下文/23 
2.4.2 配置参数/23 
2.4.3 创建监听套接字/28 
2.4.4 注册信号处理函数/29 
2.4.5 辅助进程启动/31 
2.4.6 装载客户端认证文件/32 
2.4.7 循环等待客户连接请求/33 
2.5 辅助进程/34 
2.5.1 SysLogger系统日志进程/34 
2.5.2 BgWriter后台写进程/36 
2.5.3 WalWriter预写式日志写进程/38 
2.5.4 PgArch预写式日志归档进程/40 
2.5.5 AutoVacuum系统自动清理进程/41 
2.5.6 PgStat统计数据收集进程/44 
2.6 服务进程Postgres/47 
2.6.1 初始化内存环境/48 
2.6.2 配置运行参数和处理客户端传递的GUC参数/48 
2.6.3 设置信号处理和信号屏蔽/48 
2.6.4 初始化Postgres的运行环境/49 
2.6.5 创建内存上下文并设置查询取消跳跃点/50 
2.6.6 循环等待处理查询/50 
2.6.7 简单查询的执行流程/52 
2.7 小结/53 
第3章 存储管理/54 
3.1 存储管理器的体系结构/54 
3.2 外存管理/57 
3.2.1 表和元组的组织方式/58 
3.2.2 磁盘管理器/60 
3.2.3 VFD机制/61 
3.2.4 空闲空间映射表/64 
3.2.5 可见性映射表/69 
3.2.6 大数据存储/69 
3.3 内存管理/76 
3.3.1 内存上下文概述/77 
3.3.2 高速缓存/84 
3.3.3 缓冲池管理/94 
3.3.4 IPC/102 
3.4 表操作与元组操作/106 
3.4.1 表操作/106 
3.4.2 元组操作/112 
3.5 VACUUM机制/115 
3.5.1 VACUUM操作/115 
3.5.2 Lazy VACUUM/116 
3.5.3 Full VACUUM/118 
3.6 ResourceOwner资源跟踪/120 
3.7 小结/122 
第4章 索引/123 
4.1 概述/123 
4.1.1 索引方式/124 
4.1.2 索引类型/125 
4.1.3 索引相关系统表/125 
4.1.4 索引的操作函数/129 
4.2 B-Tree索引/131 
4.2.1 B-Tree索引的组织结构/132 
4.2.2 B-Tree索引的操作/135 
4.3 Hash索引/146 
4.3.1 Hash索引的组织结构/147 
4.3.2 Hash索引的实现/153 
4.4 GiST索引/161 
4.4.1 GiST的扩展性/161 
4.4.2 GiST索引的组织结构/162 
4.4.3 GiST索引的实现/163 
4.4.4 GiST索引实例/166 
4.5 GIN索引/168 
4.5.1 GIN索引的扩展性/168 
4.5.2 GIN索引的组织结构/170 
4.5.3 GIN索引的操作/172 
4.6 TSearch2全文搜索/179 
4.6.1 全文索引的创建/180 
4.6.2 全文索引的查询/184 
4.6.3 查询结果处理/185 
4.7 小结/186 
第5章 查询编译/187 
5.1 概述/187 
5.2 查询分析/188 
5.2.1 Lex和Yacc简介/189 
5.2.2 词法和语法分析/193 
5.2.3 语义分析/208 
5.3 查询重写/218 
5.3.1 规则系统/219 
5.3.2 查询重写的处理操作/224 
5.4 查询规划/228 
5.4.1 总体处理流程/229 
5.4.2 预处理/237 
5.4.3 生成路径/240 
5.4.4 生成可优化的MIN/MAX聚集计划/253 
5.4.5 生成普通计划/254 
5.4.6 生成完整计划/257 
5.4.7 整理计划树/259 
5.4.8 实例分析/260 
5.5 代价估计/266 
5.5.1 代价估算公式/267 
5.5.2 选择度/268 
5.5.3 单个表的扫描代价/268 
5.5.4 两个表的连接代价/268 
5.6 PostgreSQL中的遗传算法/268 
5.6.1 个体编码方式及种群初始化/269 
5.6.2 适应值/270 
5.6.3 父体选择策略/270 
5.6.4 杂交算子/270 
5.6.5 变异算子/275 
5.6.6 终止条件/275 
5.6.7 基于排列生成路径/276 
5.6.8 实例分析/276 
5.7 小结/280 
第6章 查询执行/282 
6.1 查询执行策略/283 
6.1.1 可优化语句和数据定义语句/284 
6.1.2 四种执行策略/284 
6.1.3 策略选择的实现/286 
6.1.4 Portal执行的过程/288 
6.2 数据定义语句执行/289 
6.2.1 数据定义语句执行流程/289 
6.2.2 执行实例/290 
6.2.3 主要的功能处理器函数/293 
6.3 可优化语句执行/293 
6.3.1 物理代数与处理模型/294 
6.3.2 物理操作符的数据结构/295 
6.3.3 执行器的运行/297 
6.3.4 执行实例/301 
6.4 计划节点/303 
6.4.1 控制节点/304 
6.4.2 扫描节点/310 
6.4.3 物化节点/319 
6.4.4 连接节点/328 
6.5 其他子功能介绍/334 
6.5.1 元组操作/334 
6.5.2 表达式计算/337 
6.5.3 投影操作/340 
6.6 小结/342 
第7章 事务处理与并发控制/343 
7.1 事务系统简介/343 
7.2 事务系统的上层/344 
7.2.1 事务块状态/345 
7.2.2 事务块操作/346 
7.3 事务系统的底层/348 
7.3.1 事务状态/348 
7.3.2 事务操作函数/350 
7.3.3 简单查询事务执行过程实例/352 
7.4 事务保存点和子事务/353 
7.4.1 保存点实现原理/353 
7.4.2 子事务/353 
7.5 两阶段提交/354 
7.5.1 预提交阶段/354 
7.5.2 全局提交阶段/355 
7.6 PostgreSQL的并发控制/355 
7.7 PostgreSQL中的三种锁/357 
7.7.1 SpinLock/357 
7.7.2 LWLock/358 
7.7.3 RegularLock/360 
7.8 锁管理机制/368 
7.8.1 表粒度的锁操作/368 
7.8.2 页粒度的锁操作/369 
7.8.3 元组粒度的锁操作/369 
7.8.4 事务粒度的锁操作/369 
7.8.5 一般对象的锁操作/369 
7.9 死锁处理机制/370 
7.9.1 死锁处理相关数据结构/371 
7.9.2 死锁处理相关操作/372 
7.10 多版本并发控制/373 
7.10.1 MVCC相关数据结构/373 
7.10.2 MVCC相关操作/375 
7.10.3 MVCC与快照/379 
7.11 日志管理/380 
7.11.1 SLRU缓冲池/381 
7.11.2 CLOG日志管理器/386 
7.11.3 SUBTRANS日志管理器/390 
7.11.4 MULTIXACT日志管理器/392 
7.11.5 XLOG日志管理器/394 
7.11.6 日志管理器总结/402 
7.12 小结/403 
第8章 数据库安全/404 
8.1 PostgreSQL安全简介/404 
8.2 用户标识和认证/405 
8.2.1 客户端配置文件/406 
8.2.2 认证方法/408 
8.2.3 客户端认证/410 
8.3 基于角色的权限管理/413 
8.3.1 用户和角色/413 
8.3.2 角色相关的系统表/415 
8.3.3 角色管理/416 
8.4 对象访问控制/426 
8.4.1 访问控制列表/426 
8.4.2 对象权限管理/428 
8.4.3 对象权限检查/432 
8.5 小结/433 
附录A 用Eclipse开发和调试PostgreSQL/434