内容简介

第 1 章主要对 PostgreSQL 进行了简单介绍。通过介绍 PostgreSQL 的基本数据组织、内存管理和前后端通信协议,奠定理解其内部机制的基础。

第 2 章讲述了 PostgreSQL 中的隔离级别及其在并发处理中的作用,解释了如何通过快照隔离实现数据的一致性。

第 3 章详细介绍了 PostgreSQL 中页面的结构和元组的操作方式,以及如何通过多版本控制机制处理事务 。

第 4 章深入探讨了 PostgreSQL 快照机制的结构与规则,解释了其如何在高并发环境中确保数据一致性。

第 5 章介绍了 PostgreSQL 中的页剪枝 (可以快速清理页面内元组) 和 HOT (Heap-Only Tuple update) 机制,以优化存储和性能。

第 6 章详细讲解了 PostgreSQL 中 Vacuum 和 Autovacuum 机制,说明了它们如何通过清理死元组来优化存储空间和性能,此外,Vacuum 的各项状态指标也十分重要。

第 7 章解释了 PostgreSQL 中事务 ID 回卷,为什么会回卷及其相应的解决方式,通过冻结旧事务,确保系统长时间运行中的数据一致性。

第 8 章介绍了 PostgreSQL 中通过 VACUUM FULL 和索引重建优化存储空间和性能的机制,同时强调了重建操作的代价和最佳使用场景。

第 9 章详细阐述了 PostgreSQL 缓冲区缓存的设计原理,以及其在减少磁盘 I/O、提升数据库性能中的关键作用。

第 10 章详细介绍了 PostgreSQL 中的预写日志 (WAL),介绍了 WAL 的逻辑与物理结构,其次还重点阐述了 WAL 如何在崩溃恢复和保证数据一致性中发挥关键作用。

第 11 章介绍了 PostgreSQL 中不同的 WAL 模式,讨论了同步与异步写入的性能与安全性权衡,以及如何通过 WAL 压缩和日志级别优化系统性能。

第 12 章深入探讨了 PostgreSQL 中用于管理并发的关系级锁机制,强调了不同锁模式的使用场景及其对并发性能的影响。

第 13 章重点讲解了 PostgreSQL 中的行级锁机制,解释了如何通过行级锁提高并发性能,并避免锁冲突和死锁。

第 14 章介绍了 PostgreSQL 中各种特殊锁的功能与使用场景,这些锁与传统的行级锁和表级锁相辅相成,确保复杂操作的并发正确性。

第 15 章解释了 PostgreSQL 中内存结构上的锁,重点讲述了自旋锁、轻量级锁及其在缓冲区缓存和 WAL 管理中的作用。

第 16 章介绍了 PostgreSQL 中查询的执行过程,包括解析、转换、规划和执行,其次还介绍了两种查询协议的区别和各自使用场景。

第 17 章介绍了 PostgreSQL 中的基础统计信息、表达式统计信息以及多元统计信息,统计信息是查询优化中不可或缺的一环,对于查询优化至关重要。

第 18 章解释了 PostgreSQL 的可插拔存储引擎概念,默认情况下 PostgreSQL 使用的是堆表存储,但也可以实现其他存储引擎。该章节还介绍了顺序扫描、并行计划、并行执行的局限性等内容。

第 19 章解释了 PostgreSQL 中的索引类型、扩展性和内部接口的实现,并解释了如何通过操作符类和家族来为不同数据类型定制索引。该章节还详细描述了索引引擎接口的工作原理以及索引级和列级属性的配置。

第 20 章讲解了 PostgreSQL 中索引扫描的不同类型,包括常规索引扫描、仅索引扫描和位图扫描等。还讨论了不同场景下使用这些扫描方法的性能表现,并且介绍了并行索引扫描及其在查询执行中的应用。

第 21 章介绍了 PostgreSQL 中嵌套循环连接的工作原理和适用场景。该章节详细讨论了嵌套循环的几种变体,另外还分析了何时应该使用嵌套循环以及如何与其他连接方法 (哈希连接、归并连接) 进行比较。

第 22 章详细描述了 PostgreSQL 中的哈希连接算法,探讨了一阶段哈希连接和两阶段哈希连接的区别,以及如何在并行环境中优化哈希连接的性能。

第 23 章讨论了 PostgreSQL 中多样的排序算法及在归并连接中的应用。该章节介绍了快排和堆排序等算法,并探讨了外部排序的实现方式。还讲解了并行模式下的排序与合并,以及如何处理大规模数据集的排序。

第 24 章深入介绍了 PostgreSQL 中的哈希索引,包括其页面结构、操作符类及性能特性,哈希索引仅适用于等值查询场景。

第 25 章深入介绍了 PostgreSQL 中 B 树索引的结构与工作原理。该章节介绍了 B 树的搜索和插入算法,解释了如何处理相等、范围和不等查询。此外,还讲解了页面布局、去重技术以及多列索引的使用。

第 26 章解释了 GiST 索引的结构及其适应多种数据类型的能力,重点介绍了如何实现 R 树等特殊索引结构。还讨论了 GiST 索引在空间搜索和相似度搜索中的应用。

第 27 章深入探讨了 SP-GiST 的灵活性及其在处理空间数据和非平衡数据集方面的优势,介绍了多种定制化索引结构的实现。

第 28 章详细描述了 GIN 索引如何处理多值字段 (如数组和 JSON 数据) 的高效搜索,讨论了其页面布局、操作符类以及针对频繁和罕见词汇的优化策略。还重点介绍了 GIN 索引在全文搜索和复杂数据类型中的应用。

第 29 章详细解释了 BRIN 索引的工作原理及其在处理大规模数据集、顺序访问模式中的性能优化,强调了其空间效率。还详细描述了 BRIN 索引的页面布局、操作符类以及如何在数据分布稀疏的情况下使用。