PostgreSQL 数据库内核分析

当前位置:首页 > 计算机网络 > 数据库 > PostgreSQL 数据库内核分析

出版社:机械工业出版社华章公司
出版日期:2012-1
ISBN:9787111359050
作者:彭智勇,彭煜玮
页数:434页

章节摘录

   6.6小结   本章介绍了PostgreSQL中对于各种SQL语句的一般执行流程。对于用户输入的SQL语句,优化器将为可优化语句生成计划树,最终Portal会通过判断选择Executor来处理,而数据描述语句则在执行过程中由Portal使其统一进入Process Utility过程进行执行。   作为查询执行部分的入口,Portal提供了对外的调用接口:PortaIStart、PortalRun、Port,alEnd,对内提供了执行流程和部件的选择。外层通过调用Portal接口,将计划器输出的执行计划传递给Portal,Portal通过对于链表中操作的类型和链表长度等信息来决定选择怎样的执行过程,对于简单的查询语句直接调用Executor,对于需要缓存输出直到执行完成的语句则需要为其增加缓存结构和输出过程,对于更为复杂的过程提供了更为通用的复杂处理流程。不论哪种执行过程,优化器生成的查询计划树由Executor来处理,而其他数据描述语句的功能由ProcessUtility来完成。   对于种类繁多的数据描述语句,每种都有一个Stmt类型的数据结构保存其语法分析的信息,通过对于Stmt类型的判断,ProcessUtility会为其调用相应的语法解析和执行处理过程。   可优化语句则会提供Plan类的子类对象构成的计划树,每个计划节点数据结构共同继承于Plan节点,计划树的每种节点对应了一种物理操作,被分为四大类,除了对应于关系代数的各种操作外,还增加了扫描、物化、唯一等操作。每种节点根据所对应的操作的不同,执行器都为其实现了初始化、执行和清理流程。   Plan只是一个查询计划,初始化过程中为这个计划里的每个节点生成状态节点并构造状态树,保存执行中的相关信息。最终通过Executor执行每种节点的执行函数来实现各种节点的物理操作,在执行中利用状态树中信息处理相关数据。各节点的执行过程普遍包含了投影和选择操作,以及对于下层节点的处理过程调用。   Executor通过迭代的调用每个节点处理过程,从下层计划节点对应的执行流程中获取数据,并经过各种节点的处理流程,得到最终的输出结果。对于修改元组的相关操作则是在获取到元组后通过调用相关存储操作接口实现的。   执行过程需要使用存储和索引提供的接口存取数据,并涉及事务和权限控制等内容,这些会在相关章节给出更加详细的介绍。   ……

内容概要

彭智勇:武汉大学计算机学院教授,博士生导师,日本京都大学博士,武汉大学珞珈特聘教授,中国计算机学会数据库专业委员会委员,长期从事数据库理论与技术的研究和教学工作。在武汉大学开设了“数据库基础教程”、“数据库系统实现”、“数据库内核分析”等数据库系列课程。
彭煜玮:武汉大学计算机学院讲师、博士,长期从事数据库理论与技术研究以及教学工作,主要负责“数据库内核分析”等课程的实践教学工作。

书籍目录

前  言
第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

编辑推荐

   《PostgreSQL 数据库内核分析》系统、深入地剖析开源数据库PostgreSQL的实现机制和工作原理,作者跟踪、研究PostgreSQL源代码十年的呕心之作。   《PostgreSQL 数据库内核分析》按照PostgreSQL的体系结构,从存储、索引、查询编译、查询执行、并发控制以及安全几个方面切入,全面介绍PostgreSQL各种机制的运行原理。为了清晰阐述复杂的运行机理,书中穿插了大量的原理图、程序流程图进行辅助讲解,使数据库的运行过程一目了然。《PostgreSQL 数据库内核分析》没有单纯地介绍数据库原理或逐行分析源代码,而是从数据库设计者的角度,阐释数据库内部各个模块之间如何配合实现各种功能。   《PostgreSQL 数据库内核分析》基于开源数据库管理系统PostgreSQL 8.4.1,对其底层运行、实现机制进行了详尽介绍,使读者从全局的角度理解数据库管理系统。   《PostgreSQL 数据库内核分析》作者一直从事数据库相关的科研、教学工作,深知要进行数据库的设计、开发、高层次的研究或其他创新性的工作,分析数据库源代码是一个行之有效的方法。基于这一理念,作者于十年前在武汉大学率先开设了“数据库内核分析”课程,《PostgreSQL 数据库内核分析》的编写理念、内容架构也在这十年间不断成熟和完善。   《PostgreSQL 数据库内核分析》从数据库学习、研究者的认知规律出发,以典型的开源数据库管理系统为例,揭示了一个真实数据库管理系统运行背后的奥秘。作者从源代码入手,将PostgreSQL的存储管理、索引、查询编译、查询执行、并发控制、安全保障机制的实现原理、机制间的交互配合全景展现,读者不仅能够了解PostgreSQL的设计原理,提升对数据库的认识,更能在此基础上进行数据库系统的定制、数据库内核开发等设计层面的工作。

作者简介

PostgreSQL是目前广泛应用的开源数据库管理系统。本书从PostgreSQL数据库的源代码入手,深入分析了该数据库管理系统的底层实现细节,揭示了数据库运行的基本原理。本书的主要内容包括:PostgreSQL数据库的体系结构、 存储管理、索引机制、查询编译、查询执行、并发控制机制以及安全等。每个主题都引用了大量的数据结构、图表等进行说明,使读者对实现过程和机理一目了然。
本书适合从事数据库领域相关研究的技术人员、高等院校相关专业高年级本科生或研究生阅读,有助于读者进行数据库的高级开发、基于PostgreSQL定制满足需求的数据库系统,或者在数据库内核中实现并验证数据库新技术。

图书封面


 PostgreSQL 数据库内核分析下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计3条)

  •     国内有人系统分析PostgreSQL的源码,还是值得鼓励的,有些细节写得还是可以的,个人对索引和事务管理器比较感兴趣,尤其是事务管理器的章节,可以作为实践很好的例子来读,结合jim gray的《事务处理》的关于事务管理器那三章的理论来读,收获可能更多一些。
  •     作者对代码非常熟悉,和互联网公司的人写出来的书就是不一样.很多地方没看懂,火速买一本收藏.第一次了解到动态规划和图论等一些大学里课程里学到的知识能够发挥的地方.原来执行计划需要这么知识阿, 真是汗颜.另外发现pg和Oracle还是很像的,多进程,共享内存,表空间...存储和数据库一体.这本书结合数据库实现和事务处理看应该很不错.
  •     postgresql的书向来就少和国内的企业用的不多有很大关系。postgresql其实一点都不赖。这书不知道怎么样。中文的postgresql的书实在难得postgresql的书向来就少和国内的企业用的不多有很大关系。postgresql其实一点都不赖。这书不知道怎么样。中文的postgresql的书实在难得

精彩短评 (总计35条)

  •     了解内核,不错的一本书,写的很详尽
  •     还不错,很流畅,感觉深度还是不够。
  •     纸张质量很好,内容适合以后从事数据研究的人
  •     次购物的总体满意度如何?
  •     实验室导师要求买的书!
  •     Shit,最近老是看到这类源代码分析的书,垃圾
  •     还没有看!先收藏着!
  •     强烈推荐,学术界的先驱。
  •     介绍数据库使用和开发的内容较少
  •     读完全书,有些地方语焉不详,有很大空间可以打磨,要翔实地分析PostgreSQL,400多页的书显然不够,或许可以考虑针对几个关键模块(优化器,存储,事务管理)单独出册分析。不过作为一本难得的分析PostgreSQL源代码的书,作者们的辛勤付出值得肯定。
  •     实实在在的一本书,利用源代码分析来讲关系数据库的实现,对于做DB方向的人而言,读一遍很有必要,尽管有不少内容是大概知道的,但是从实现的层次讲来,还是能够得到一些启发。
  •     书写得不好,太抽象,概念居多,实操没有,但就算是讲概念,逻辑连贯性差,经常是跳跃式地讲,无一定功底读起来很费解。
  •     适合刚开始研读PG源代码的朋友;章节安排较合理,有大量图表说明,对于理解PG整体架构及代码组织有帮助,粗略读完一遍后适合作为手册查询;不过,整本书介绍内容时主次还不够分明,有些主要内容不够清楚,一些次要内容介绍过细~
  •     用来提纲契领的书,
  •     这次国内出这个书,感觉还不错,内容也够多
  •     有许多的错误,主要是代码上的,包括大小写,缩进,还有一些书中的代码不完整,似乎是编辑的时候搞错了。另外书中的语言组织不是很适合自学,更像是大学中的教科书。
  •     讲的比较细,更像是代码的解读
  •     适于初入者学习,数据库基础知识需要专门的书
  •     内核分析
  •     鉴于写报告的时候抄了一把还是给个四星吧_(:з」∠)_ 其实还没有注释易懂。
  •     分析的不错 给国内整天论文科研的教授们树立了榜样
  •     稍候写评;
  •     偏向数据库实现
  •     数据库源码分析
  •     postgresql本来书就少,好不容易找来一本,还TMD不能看!不管你书的深度有多高,写到如此枯燥乏味,不能忍受呀!!还有,把postgre源码中所有底层方法写成书,完全是api文档。我知道这些方法有毛线用呀!
  •     辛辛苦苦终于读完了,虽然只是走马观花,但毕竟对一个成熟的数据库系统有了一定的了解。
  •     少有的postgresql的中文书籍
  •     为数不多的postgres的书籍
  •     数据库从业者的好书
  •     纸张不错,观感很好,这种主题的书在国内比较少,看书的简介是说本书来自大学教学研究的心得,不过国内做研究的风气不敢恭维,所以要等读了以后才能下结论
  •     一直在寻找postgresQL方面的书籍,很高兴看到这本书,很有帮助。
  •     pg的内核相当有趣
  •     帮助不大,就是把整体讲一下,每个部分代码讲一下流程。有些部分还不如一些讲调优的文章细致。 看过之后如果遇到奇怪的行为,想用gdb跟踪的话,查一下能知道应该跟踪哪部分。
  •     内容丰富,作者写的很认真负责,当当配送给力,次日就到了,全新书籍,没有瑕疵,喜欢
  •     太枯燥太枯燥太枯燥太枯燥太枯燥太枯燥
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024