搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
PostgreSQL数据库内核分析
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787111359050
  • 作      者:
    彭智勇,彭煜玮编著
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2012
收藏
编辑推荐
  

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

展开
作者简介
    彭智勇,武汉大学计算机学院教授,博士生导师,日本京都大学博士,中国计算机学会数据库专业委员会委员,长期从事数据库理论与技术的研究和教学工作。在武汉大学开设了“数据库基础”、“数据库系统实现”、“数据库内核分析”等数据库系列课程。
    彭煜玮,武汉大学计算机学院讲师、博士,长期从事数据库理论与技术研究以及教学工作,主要负责“数据库内核分析”等课程的实践教学工作。
展开
内容介绍
    postgresql是目前广泛应用的开源数据库管理系统。《PostgreSQL 数据库内核分析》从postgresql数据库的源代码入手,深入分析了该数据库管理系统的底层实现细节,揭示了数据库运行的基本原理。《PostgreSQL 数据库内核分析》的主要内容包括:postgresql数据库的体系结构、 存储管理、索引机制、查询编译、查询执行、并发控制机制以及安全等。每个主题都引用了大量的数据结构、图表等进行说明,使读者对实现过程和机理一目了然。
    《postgresql数据库内核分析》适合从事数据库领域相关研究的技术人员、高等院校相关专业高年级本科生或研究生阅读,有助于读者进行数据库的高级开发、基于postgresql定制满足需求的数据库系统,或者在数据库内核中实现并验证数据库新技术。
展开
精彩书摘
    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通过迭代的调用每个节点处理过程,从下层计划节点对应的执行流程中获取数据,并经过各种节点的处理流程,得到最终的输出结果。对于修改元组的相关操作则是在获取到元组后通过调用相关存储操作接口实现的。
    执行过程需要使用存储和索引提供的接口存取数据,并涉及事务和权限控制等内容,这些会在相关章节给出更加详细的介绍。
    ……
展开
目录
《postgresql数据库内核分析》
前 言
第1章 postgresql系统概述
1.1 postgresql简介及发展历程
1.2 postgresql的特性
1.3 postgresql的应用
1.4 postgresql代码结构
1.5 安装postgresql
1.6 postgresql数据库命令

第2章 postgresql的体系结构
2.1 系统表
2.1.1 主要系统表功能及依赖关系
2.1.2 系统视图
2.2 数据集簇
2.2.1 initdb的使用
2.2.2 postgres.bki
2.2.3 initdb的执行过程
2.2.4 系统数据库
2.3 postgresql进程结构
2.4 守护进程postmaster
2.4.1 初始化内存上下文
2.4.2 配置参数
2.4.3 创建监听套接字
2.4.4 注册信号处理函数
2.4.5 辅助进程启动
2.4.6 装载客户端认证文件
2.4.7 循环等待客户连接请求
2.5 辅助进程
2.5.1 syslogger系统日志进程
2.5.2 bgwriter后台写进程
2.5.3 walwriter预写式日志写进程
2.5.4 pgarch预写式日志归档进程
2.5.5 autovacuum系统自动清理进程
2.5.6 pgstat统计数据收集进程
2.6 服务进程postgres
2.6.1 初始化内存环境
2.6.2 配置运行参数和处理客户端传递的guc参数
2.6.3 设置信号处理和信号屏蔽
2.6.4 初始化postgres的运行环境
2.6.5 创建内存上下文并设置查询取消跳跃点
2.6.6 循环等待处理查询
2.6.7 简单查询的执行流程
2.7 小结

第3章 存储管理
3.1 存储管理器的体系结构
3.2 外存管理
3.2.1 表和元组的组织方式
3.2.2 磁盘管理器
3.2.3 vfd机制
3.2.4 空闲空间映射表
3.2.5 可见性映射表
3.2.6 大数据存储
3.3 内存管理
3.3.1 内存上下文概述
3.3.2 高速缓存
3.3.3 缓冲池管理
3.3.4 ipc
3.4 表操作与元组操作
3.4.1 表操作
3.4.2 元组操作
3.5 vacuum机制
3.5.1 vacuum操作
3.5.2 lazy vacuum
3.5.3 full vacuum
3.6 resourceowner资源跟踪
3.7 小结

第4章 索引
4.1 概述
4.1.1 索引方式
4.1.2 索引类型
4.1.3 索引相关系统表
4.1.4 索引的操作函数
4.2 b-tree索引
4.2.1 b-tree索引的组织结构
4.2.2 b-tree索引的操作
4.3 hash索引
4.3.1 hash索引的组织结构
4.3.2 hash索引的实现
4.4 gist索引
4.4.1 gist的扩展性
4.4.2 gist索引的组织结构
4.4.3 gist索引的实现
4.4.4 gist索引实例
4.5 gin索引
4.5.1 gin索引的扩展性
4.5.2 gin索引的组织结构
4.5.3 gin索引的操作
4.6 tsearch2全文搜索
4.6.1 全文索引的创建
4.6.2 全文索引的查询
4.6.3 查询结果处理
4.7 小结

第5章 查询编译
5.1 概述
5.2 查询分析
5.2.1 lex和yacc简介
5.2.2 词法和语法分析
5.2.3 语义分析
5.3 查询重写
5.3.1 规则系统
5.3.2 查询重写的处理操作
5.4 查询规划
5.4.1 总体处理流程
5.4.2 预处理
5.4.3 生成路径
5.4.4 生成可优化的min/max聚集计划
5.4.5 生成普通计划
5.4.6 生成完整计划
5.4.7 整理计划树
5.4.8 实例分析
5.5 代价估计
5.5.1 代价估算公式
5.5.2 选择度
5.5.3 单个表的扫描代价
5.5.4 两个表的连接代价
5.6 postgresql中的遗传算法
5.6.1 个体编码方式及种群初始化
5.6.2 适应值
5.6.3 父体选择策略
5.6.4 杂交算子
5.6.5 变异算子
5.6.6 终止条件
5.6.7 基于排列生成路径
5.6.8 实例分析
5.7 小结

第6章 查询执行
6.1 查询执行策略
6.1.1 可优化语句和数据定义语句
6.1.2 四种执行策略
6.1.3 策略选择的实现
6.1.4 portal执行的过程
6.2 数据定义语句执行
6.2.1 数据定义语句执行流程
6.2.2 执行实例
6.2.3 主要的功能处理器函数
6.3 可优化语句执行
6.3.1 物理代数与处理模型
6.3.2 物理操作符的数据结构
6.3.3 执行器的运行
6.3.4 执行实例
6.4 计划节点
6.4.1 控制节点
6.4.2 扫描节点
6.4.3 物化节点
6.4.4 连接节点
6.5 其他子功能介绍
6.5.1 元组操作
6.5.2 表达式计算
6.5.3 投影操作
6.6 小结

第7章 事务处理与并发控制
7.1 事务系统简介
7.2 事务系统的上层
7.2.1 事务块状态
7.2.2 事务块操作
7.3 事务系统的底层
7.3.1 事务状态
7.3.2 事务操作函数
7.3.3 简单查询事务执行过程实例
7.4 事务保存点和子事务
7.4.1 保存点实现原理
7.4.2 子事务
7.5 两阶段提交
7.5.1 预提交阶段
7.5.2 全局提交阶段
7.6 postgresql的并发控制
7.7 postgresql中的三种锁
7.7.1 spinlock
7.7.2 lwlock
7.7.3 regularlock
7.8 锁管理机制
7.8.1 表粒度的锁操作
7.8.2 页粒度的锁操作
7.8.3 元组粒度的锁操作
7.8.4 事务粒度的锁操作
7.8.5 一般对象的锁操作
7.9 死锁处理机制
7.9.1 死锁处理相关数据结构
7.9.2 死锁处理相关操作
7.10 多版本并发控制
7.10.1 mvcc相关数据结构
7.10.2 mvcc相关操作
7.10.3 mvcc与快照
7.11 日志管理
7.11.1 slru缓冲池
7.11.2 clog日志管理器
7.11.3 subtrans日志管理器
7.11.4 multixact日志管理器
7.11.5 xlog日志管理器
7.11.6 日志管理器总结
7.12 小结

第8章 数据库安全
8.1 postgresql安全简介
8.2 用户标识和认证
8.2.1 客户端配置文件
8.2.2 认证方法
8.2.3 客户端认证
8.3 基于角色的权限管理
8.3.1 用户和角色
8.3.2 角色相关的系统表
8.3.3 角色管理
8.4 对象访问控制
8.4.1 访问控制列表
8.4.2 对象权限管理
8.4.3 对象权限检查
8.5 小结
附录a 用eclipse开发和调试postgresql
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证