PostgreSQL是目前广泛应用的开源数据库管理系统。本书从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
《求索真文明》内容简介:全书共收录朱维铮先生的18篇文章,每篇围绕一位晚清时期的学者,论述其主要思想和重要著作。朱先生对每位
Internationalinterestinthesophisticatedandaestheticvisualizationofcomplexinforma...
《故乡情·北江谣》内容简介:《故乡情·北江谣》一书的内容分为上下两篇,作者林永泽有着深厚的文字功底,擅长运用四时之景的变化
《情趣的设计世界:张剑产品设计作品选》作者张剑是位个子挺大但心很细致的人。我们从这本集子中可以看出了这一点。他非常关注生活
在线教育迅猛扩张,大规模公开在线课程(MOOC)颠覆课堂。从单一到多元,从封闭到开放,从批量生产到个性定制。当高等教育从传统
《细说Linux系统管理》内容简介:本书为学习Linux系统管理的参考书,全书共9章,内容涵盖Linux系统管理所需的所有知识点,讲解了Li
《深入浅出设计模式》(影印版)的编写运用许多最新的研究,包括神经生物学、认知科学以及学习理论,这使得《深入浅出设计模式》(影
中文版Photoshop标准教程 本书特色 《中文版photoshop标准教程》:专家编著,依纲编写:《中文版photoshop标准教程》由国内一线photos...
《公司的历程》内容简介:苗延波所著的本书从世界经济史和商业史的角度,对公司这个特殊的社会经济组织产生的源头、雏形、成熟和发
《Office 2010办公专家从入门到精通(精编版)》内容简介:书是指导初学者学习Office 2010的入门书籍。书中详细地介绍了初学者学习
《黑客攻防与网络安全从新手到高手(实战篇)》内容简介:本书在剖析用户进行黑客防御中迫切需要或想要用到的技术时,力求对其进行
建筑结构CAD应用基础(第二版)(高等学校土木工程专业规划教材) A3604 目录 第1章 土木工程结构CAD及应用概况1.1 工程结构CAD的发展历史1.2 ...
《编排设计》由余青青编著。编排设计是现代艺术设计的重要组成部分,也是视觉传达的重要手段。它既是一门具有相对独立性的艺术,
《李济平 邓定海传》内容简介:本书为雨花台烈士传丛书第四批之一,为李济、邓定海烈士的合传。李济于1927年加入中国,曾任扬州地委
《无穷的远方,无数的人们,都和我有关》内容简介:《无穷的远方,无数的人们,都和我有关:鲁迅散文随笔精选》由著名学者、鲁迅研
书是讲述下一代编程语言Erlang的权威著作,主要涵盖顺序型编程、异常处理、编译和运行代码、并发编程、并发编程中的错误处理、分
《孩子们喜爱的国宝故事》内容简介:本书是继《孩子们喜爱的民间故事》《孩子们喜爱的民俗故事》《孩子们喜爱的诗词故事》,毛晓青
数据库云平台理论与实践 本书特色数据库云平台是当今乃至今后一段时期信息化领域普遍关注的一个热点领域。云技术的本质是分布式计算,而数据库云平台揭示的正是分布式计算...
物流仓储配送系统设计技巧450问 本书特色 本书通过大量的公式、图形、表格、实例,系统地介绍了物流配送中心、自动化仓库、堆垛机、输送机、储存机械、高密度储存、a...
《承包地“三权分置”的法律表达与实效考察》内容简介:2018年中央一号文件着重提出深化农村土地制度改革,其中包括进一步完善农村