PostgreSQL指南:内幕探索

PostgreSQL指南:内幕探索

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书全面诠释了PostgreSQL数据库系统的整体架构及各个模块。

内容简介

PostgreSQL是一个开源的多用途关系数据库系统,在世界各地广泛使用。它是一个集成了子系统的庞大系统,每个系统都有一个特殊的复杂功能,并且可以相互协作。对内部机制的理解对于使用PostgreSQL进行管理和集成至关重要,本书从内核逻辑层面展现了PostgreSQL的全貌,并详细分析了PostgreSQL数据库的进程与内存体系结构,并发控制的原理及多种场景的流程、内存管理机制、预写日志的文件结构、流复制等多个子系统的的原理细节。

作者简介

作者铃木启修,毕业于北海道大学信息工程学院,曾在多家公司担任软件开发人员和技术经理/总监。在数据库和系统集成领域出版了7本书(3本PostgreSQL书籍和3本MySQL书籍)。作为日本PostgreSQL用户组(2010-2016)的主管,组织了日本最大(非商业)的PostgreSQL技术研讨会/讲座六年多,并担任日本PostgreSQL的项目委员会主席。

章节目录

版权信息

内容简介

推荐序

译者序

作者序

致谢

读者服务

第1章 数据库集簇、数据库和数据表

1.1 数据库集簇的逻辑结构

1.2 数据库集簇的物理结构

1.2.1 数据库集簇的布局

1.2.2 数据库布局

1.2.3 表和索引相关文件的布局

1.2.4 PostgreSQL中表空间的布局

1.3 堆表文件的内部布局

1.4 读写元组的方式

1.4.1 写入堆元组

1.4.2 读取堆元组

第2章 进程和内存架构

2.1 进程架构

2.1.1 Postgres服务器进程

2.1.2 后端进程

2.1.3 后台进程

2.2 内存架构

2.2.1 本地内存区域

2.2.2 共享内存区域

第3章 查询处理

3.1 概览

3.1.1 解析器

3.1.2 分析器

3.1.3 重写器

3.1.4 计划器与执行器

3.2 单表查询的代价估计

3.2.1 顺序扫描

3.2.2 索引扫描

3.2.3 排序

3.3 创建单表查询的计划树

3.3.1 预处理

3.3.2 找出代价最小的访问路径

3.3.3 创建计划树

3.4 执行器如何工作

3.5 连接

3.5.1 嵌套循环连接

3.5.2 归并连接

3.5.3 散列连接

3.5.4 连接访问路径与连接节点

3.6 创建多表查询计划树

3.6.1 预处理

3.6.2 获取代价最小的路径

3.6.3 获取三表查询代价最小的路径

参考文献

第4章 外部数据包装器

4.1 概述

4.1.1 创建一棵查询树

4.1.2 连接至远程服务器

4.1.3 使用EXPLAIN命令创建计划树(可选)

4.1.4 逆解析

4.1.5 发送SQL命令并接收结果

4.2 postgres_fdw的工作原理

4.2.1 多表查询

9.6或更高版本:

4.2.2 排序操作

4.2.3 聚合函数

第5章 并发控制

5.1 事务标识

5.2 元组结构

5.3 元组的增、删、改

5.3.1 插入

5.3.2 删除

5.3.3 更新

5.3.4 空闲空间映射

5.4 提交日志

5.4.1 事务状态

5.4.2 提交日志如何工作

5.4.3 提交日志的维护

5.5 事务快照

5.6 可见性检查规则

5.6.1 t_xmin的状态为ABORTED

5.6.2 t_xmin的状态为IN_PROGRESS

5.6.3 t_xmin的状态为COMMITTED

5.7 可见性检查

5.7.1 可见性检查的过程

5.7.2 PostgreSQL可重复读等级中的幻读

5.8 防止丢失更新

5.8.1 并发UPDATE命令的行为

5.8.2 例子

5.9 可串行化快照隔离

5.9.1 SSI实现的基本策略

5.9.2 PostgreSQL的SSI实现

5.9.3 SSI的原理

5.9.4 假阳性的串行化异常

5.10 需要的维护进程

参考文献

第6章 清理过程

6.1 并发清理概述

6.1.1 第一部分

6.1.2 第二部分

6.1.3 第三部分

6.1.4 后续处理

6.2 可见性映射

6.3 冻结过程

6.3.1 惰性模式

6.3.2 迫切模式

6.3.3 改进迫切模式中的冻结过程

6.4 移除不必要的CLOG文件

6.5 自动清理守护进程

6.6 完整清理

第7章 堆内元组和仅索引扫描

7.1 堆内元组

7.1.1 没有HOT时的行更新

7.1.2 HOT如何工作

7.2 仅索引扫描

第8章 缓冲区管理器

8.1 概览

8.2 缓冲区管理器的结构

8.2.1 缓冲表

8.2.2 缓冲区描述符

8.2.3 缓冲区描述符层

8.2.4 缓冲池

8.3 缓冲区管理器锁

8.3.1 缓冲表锁

8.3.2 缓冲区描述符相关的锁

8.4 缓冲区管理器的工作原理

8.4.1 访问存储在缓冲池中的页面

8.4.2 将页面从存储加载到空槽

8.4.3 将页面从存储加载到受害者缓冲池槽

8.4.4 页面替换算法:时钟扫描

8.5 环形缓冲区

8.6 脏页刷盘

第9章 WAL

9.1 概述

9.1.1 没有WAL的插入操作

9.1.2 插入操作与数据库恢复

9.1.3 整页写入

9.2 事务日志与WAL段文件

9.3 WAL段文件的内部布局

9.4 WAL记录的内部布局

9.4.1 WAL记录首部部分

9.4.2 XLOG记录的数据部分(9.4及更低版本)

9.4.3 XLOG记录的数据部分(9.5及更高版本)

9.5 WAL记录的写入

9.6 WAL写入进程

9.7 PostgreSQL中的检查点进程

9.7.1 检查点进程概述

9.7.2 pg_crontrol文件

9.8 PostgreSQL中的数据库恢复

9.9 WAL段文件管理

9.9.1 WAL段切换

9.9.2 WAL段管理(9.5及更高版本)

9.9.3 WAL段管理(9.4及更低版本)

9.10 持续归档与归档日志

第10章 基础备份与时间点恢复

10.1 基础备份

10.1.1 pg_start_backup

10.1.2 pg_stop_backup

10.2 时间点恢复(PITR)的工作原理

10.3 时间线与时间线历史文件

10.3.1 时间线标识

10.3.2 时间线历史文件

10.4 时间点恢复与时间线历史文件

第11章 流复制

11.1 流复制的启动

11.2 如何实施流复制

11.2.1 主从间的通信

11.2.2 发生故障时的行为

11.3 管理多个备库

11.3.1 同步优先级与同步状态

11.3.2 主库如何管理多个备库

11.3.3 发生故障时的行为

11.4 备库的故障检测

PostgreSQL指南:内幕探索是2019年由电子工业出版社出版,作者[日]铃木启修。

得书感谢您对《PostgreSQL指南:内幕探索》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Go语言定制指南 电子书
本书从Go语言语法树出发,重新审视Go语言源文件,阐述定制Go语言的核心技术。书中通过对go/ast、go/ssa等包的分析,一步步深入Go语言核心,最后简要介绍LLVM,读者可以结合LLVM和Go语言语法树按需定制,创造一个语法与Go语言语法类似的简单的编程语言及与其对应的编译器,达到掌握自制编程语言和编译器的目的。
Nmap渗透测试指南 电子书
本书专门介绍Nmap渗透测试的有关内容,全书共分12章,从基础的Nmap下载、安装开始介绍,由浅入深地对Nmap的功能作了完整详细的说明。同时书中还包括了大量的实践案例,更有利于读者对Nmap使用的理解。本书主要内容包括:Nmap基础、Nmap工作原理、扫描指定段、Nmap主机发现、TCPACKPing扫描、ARPPing扫描、路由跟踪、探索网络、从Nmap识别端口状态、隐蔽扫描、指纹识别与探测、
华为VPN学习指南 电子书
1.本书针对目前市场上没有专门图书的华为AR G3系列路由器传统VPN(包括L2TP VPN、IPSec VPN、GRE VPN、SSL VPN和DSVPN)技术原理、配置方法进行介绍。 2.本书内容系统、丰富,更实战化,不仅包括许多深入的技术原理介绍,还有大量的分类应用配置步骤展示和具体的应用方案配置案例。 3.本书注重细节,系统深入,思路清晰,符合读者阅读习惯。
Java架构师指南 电子书
知名Java专家多年经验总结,介绍从程序员进阶到架构师需要具备的技能的完整教程 基于Java官方API的解读,从架构师的独特角度讲解Java知识和技能 企业级开发的经典示例,全程项目驱动,涵盖电商支付接口的综合调试 程序员走向架构师是必经之路。本书基于Java官方API进行解读,从架构师的角度讲解Java知识和技能,并从搭建虚拟机开始,学习常用的Linux命令,力争使程序员能在较短的时间内成功迈入架构师的殿堂。 近年来编程领域的知识愈加丰富,使广大程序员应接不暇。如何在有限的时间内高效学习是一个棘手的问题。本书作者根据自身的丰富经验,精选了Java中必须掌握的核心技能,并以项目为驱动,循序渐进,详细讲解了企业级项目和电商平台,让读者在学习知识的同时以实战加深印象,可谓是高屋建瓴。 如何能在短时间内达到架构师的水平?面对难以入手的海量知识,读者往往一头雾水,相信通过阅读本书,每位读者都能从中找到答案。
Go语言趣学指南 电子书
Go是谷歌公司为了解决重大问题而设计的一种小型编程语言。完成大型项目需要大型团队,而大型团队中团队成员的经验水平往往各不相同。Go是一种小巧却功能强大的语言,它能够被任何人理解和使用,无论其经验如何。 快速、现代的编程语言能让业余爱好者、初学者和专业人员都受益。你需要的正是这样的语言。本书针对Go语言基础知识提供了实操性的指导,使你能够掌握Go语法,使用类型和函数,探索状态和并发等更重要的概念,并通过大量练习来巩固学到的知识。 本书包括以下内容: ●切片、接口、指针和并发等重要语言概念; ●地鼠太空航行、火星探测器、文本加密以及人类繁衍模拟等7个单元实验; ●无须安装即可在Go Playground中运行的示例。 本书面向所有熟悉计算机编程以及渴望获得这一技能的人。