内容简介
《瀚海拾贝:大师之路》深入讲解了PostgreSQL数据库的核心原理及进阶应用,涵盖数据库运维备份、监控、故障排查、性能优化、常用扩展插件等实用内容。通过丰富的实践经验,帮助读者深入掌握PostgreSQL数据库的原理、运维技巧,以及性能优化方法,提升数据库管理能力,保障数据库稳定高效运行。适合有一定PostgreSQL使用经验的技术人员进阶阅读。访问获取更多PostgreSQL实战内容。
精彩书摘
                                                          第一章 PostgreSQL数据库运行体系
  PostgreSQL作为一款功能强大的开源关系型数据库,具备优秀的跨平台特性,其运行体系主要包括以下几个部分:
  编译执行系统:这部分由查询编译器和查询执行器组成,负责对数据库操作请求进行解析、优化和转换,最终实现对物理存储介质中数据的操作。
  系统表:PostgreSQL数据库的元信息管理中心,包括数据库对象信息和数据库管理控制信息。系统表管理元数据信息,将PostgreSQL数据库的各个模块有机地连接在一起,形成一个高效的数据管理系统。
  存储管理系统:该部分由索引管理器、内存管理器、外存管理器组成,负责存储和管理物理数据,为编译查询系统提供支持。
  事务系统:由事务管理器、日志管理器、并发控制、锁管理器组成。其中,事务管理器和日志管理器完成对操作请求处理的事务一致性的支持,并发控制和锁管理器提供对并发访问数据一致性的支持。
  此外,PostgreSQL数据库的存储结构分为逻辑存储结构和物理存储结构。逻辑存储结构是数据库集簇的内部组织和管理数据的方式,而物理存储结构则是操作系统中组织和管理数据的方式。在PostgreSQL中,数据库本身也是数据库对象,它们在逻辑上是彼此分离的。每个数据库集簇可以包含多个Database、多个User对象。
  1.PostgreSQL简介
  1.1 PostgreSQL发展史
  1.1.1 起源与早期项目
  PostgreSQL的早期项目可以追溯到20世纪80年代末和90年代初,是由加拿大的计算机科学家Michael Stonebraker及其团队在加州大学伯克利分校启动。该项目最初是作为Ingres的继承者而启动的,Ingres是一个早期的关系型数据库系统。1986年,该项目被命名为Berkley Postgres Project,目标是创建一个强大的、开源的关系型数据库管理系统。在1989 年到1993年期间,Postgres]项目发布了多个版本,从1.0到4.2,这些版本在学术界和工业界都引起了广泛关注。
  1.1.2 Postgres的诞生
  1994年,Andrew Yu和Jolly Chen在Postgres中增加了SQL语言的解释器,并将源代码以新名字Postgres95发布到互联网上,成为最初伯克利Postgres项目的开源继承者.Postgres95的源代码采用ANSIC,代码量减少了25%,性能和可维护性得到了显著提升。Postgres95的1.0.x版本在进行WisconsinBenchmark测试时,比Postgres的版本4.2快30%到50%。此外,Postgres95还增加了对GROUPBY查询子句的支持,重新构建了聚集函数,并引入了利用GNU的Readline进行交互SQL查询的程序psql。
  1.1.3 PostgreSQL的命名与版本更新
  1996年,随着SQL功能的不断完善,Postgres95的名字已经跟不上时代,于是更名为PostgreSQL,版本号从6.0开始,回归到最初由伯克利Postgres项目开始的序列。PostgreSQL的开发重点逐渐转向一些有争议的特性和功能,如事务处理、并发控制和数据完整性保障等。之后,PostgreSQL经历了多个版本的发布,每个版本都有新的功能和改进。例如,2005年1月19日发布的版本8.0,使PostgreSQL能够以原生方式运行于Windows系统。如今,PostgreSQL已经成为功能最强大的开源数据库之一,得到了全球开发人员、贡献者和用户的广泛关注和支持。
  1.2 PostgreSQL优势
  1.2.1 开源与可定制性
  PostgreSQL是一个开源的对象关系型数据库管理系统,采用自由的BSD/MIT许可,任何组织都可以免费使用、复制、修改和重新分发代码,只需提供版权声明即可。这种开源特性使得PostgreSQL具有极高的可定制性,开发者可以根据自身需求对数据库进行深度定制和优化。例如,用户可以使用C语言编写自定义函数和触发器,还可以在GiST框架下实现自己的索引类型,这种高度的可定制性为满足特定业务需求提供了强大的支持。此外,PostgreSQL拥有一个庞大且活跃的社区,社区成员不断贡献新的功能和解决方案,进一步拓展了其功能和应用场景。
  ……
                                                    
目录
                                                        第一章 PostgreSQL数据库运行体系
1.PostgreSQL简介 2
2.数据库初始化 8
3.对象标识OID 10
4.系统目录表 13
5.数据库体系结构 14
6.事务实现机制 31
7.锁管理 38
8.并发控制 47
9.数据库维护清理 56
10.探秘数据库内存 64
第二章 索引
1.PostgreSQL中的索引类型 74
2.索引关注点 90
3.索引其他信息 95
第三章 性能测试
1.为什么要进行性能测试 100
2.性能指标 101
3.常见性能测试基准解析 102
4.常用测试工具 104
5.科学选择性能测试方案 116
6.性能测试结果分析与优化 118
第四章 备份与恢复
1.备份与恢复工具 121
2.数据修复性恢复 140
第五章 PostgreSQL运维与监控
1.PostgreSQL运维相关知识 155
2.监控的指标 186
3.常用的监控工具 190
第六章 数据库性能优化
1.PostgreSQL性能优化策略 200
2.服务器硬件影响 201
3.操作系统优化 208
4.数据库参数优化 220
5.性能监控与慢SQL 226
第七章 高可用及负载均衡
1.数据库容灾 249
2.负载均衡 270
3.数据库高可用 277
第八章 常用插件
1.地理信息系统GIS 298
2.分布式插件Citus 312
3.访问其他数据库 324
                                                    
试读
                                                          第一章 PostgreSQL数据库运行体系
  PostgreSQL作为一款功能强大的开源关系型数据库,具备优秀的跨平台特性,其运行体系主要包括以下几个部分:
  编译执行系统:这部分由查询编译器和查询执行器组成,负责对数据库操作请求进行解析、优化和转换,最终实现对物理存储介质中数据的操作。
  系统表:PostgreSQL数据库的元信息管理中心,包括数据库对象信息和数据库管理控制信息。系统表管理元数据信息,将PostgreSQL数据库的各个模块有机地连接在一起,形成一个高效的数据管理系统。
  存储管理系统:该部分由索引管理器、内存管理器、外存管理器组成,负责存储和管理物理数据,为编译查询系统提供支持。
  事务系统:由事务管理器、日志管理器、并发控制、锁管理器组成。其中,事务管理器和日志管理器完成对操作请求处理的事务一致性的支持,并发控制和锁管理器提供对并发访问数据一致性的支持。
  此外,PostgreSQL数据库的存储结构分为逻辑存储结构和物理存储结构。逻辑存储结构是数据库集簇的内部组织和管理数据的方式,而物理存储结构则是操作系统中组织和管理数据的方式。在PostgreSQL中,数据库本身也是数据库对象,它们在逻辑上是彼此分离的。每个数据库集簇可以包含多个Database、多个User对象。
  1.PostgreSQL简介
  1.1 PostgreSQL发展史
  1.1.1 起源与早期项目
  PostgreSQL的早期项目可以追溯到20世纪80年代末和90年代初,是由加拿大的计算机科学家Michael Stonebraker及其团队在加州大学伯克利分校启动。该项目最初是作为Ingres的继承者而启动的,Ingres是一个早期的关系型数据库系统。1986年,该项目被命名为Berkley Postgres Project,目标是创建一个强大的、开源的关系型数据库管理系统。在1989 年到1993年期间,Postgres]项目发布了多个版本,从1.0到4.2,这些版本在学术界和工业界都引起了广泛关注。
  1.1.2 Postgres的诞生
  1994年,Andrew Yu和Jolly Chen在Postgres中增加了SQL语言的解释器,并将源代码以新名字Postgres95发布到互联网上,成为最初伯克利Postgres项目的开源继承者.Postgres95的源代码采用ANSIC,代码量减少了25%,性能和可维护性得到了显著提升。Postgres95的1.0.x版本在进行WisconsinBenchmark测试时,比Postgres的版本4.2快30%到50%。此外,Postgres95还增加了对GROUPBY查询子句的支持,重新构建了聚集函数,并引入了利用GNU的Readline进行交互SQL查询的程序psql。
  1.1.3 PostgreSQL的命名与版本更新
  1996年,随着SQL功能的不断完善,Postgres95的名字已经跟不上时代,于是更名为PostgreSQL,版本号从6.0开始,回归到最初由伯克利Postgres项目开始的序列。PostgreSQL的开发重点逐渐转向一些有争议的特性和功能,如事务处理、并发控制和数据完整性保障等。之后,PostgreSQL经历了多个版本的发布,每个版本都有新的功能和改进。例如,2005年1月19日发布的版本8.0,使PostgreSQL能够以原生方式运行于Windows系统。如今,PostgreSQL已经成为功能最强大的开源数据库之一,得到了全球开发人员、贡献者和用户的广泛关注和支持。
  1.2 PostgreSQL优势
  1.2.1 开源与可定制性
  PostgreSQL是一个开源的对象关系型数据库管理系统,采用自由的BSD/MIT许可,任何组织都可以免费使用、复制、修改和重新分发代码,只需提供版权声明即可。这种开源特性使得PostgreSQL具有极高的可定制性,开发者可以根据自身需求对数据库进行深度定制和优化。例如,用户可以使用C语言编写自定义函数和触发器,还可以在GiST框架下实现自己的索引类型,这种高度的可定制性为满足特定业务需求提供了强大的支持。此外,PostgreSQL拥有一个庞大且活跃的社区,社区成员不断贡献新的功能和解决方案,进一步拓展了其功能和应用场景。
  ……
                                                    
前言/序言
                                                          开源数据库的实践典范(序)
  在数据库领域,PostgreSQL始终以“功能最强大”的开源关系型数据库著称。本书以工程化视角揭示其核心价值:从兼容多种数据模型的灵活性,到支持复杂查询的强大能力;从自我修复的自动清理机制,到扩展生态的丰富插件系统,PostgreSQL展现了开源技术的韧性。
  通过扩展插件,PostgreSQL既能支撑地理信息系统(GIS)的复杂空间计算,又能实现分布式集群的弹性扩展。这种“即装即用”的扩展能力,使PostgreSQL能胜任传统事务处理的同时,还能应对实时分析挑战。对于运维工程师,书中提供的自动化监控模板与备份方案,是保障系统稳定运行的基石;对开发者而言,事务隔离级别的透明化解读与SQL调优指南,则是构建高质量应用的指南针。
  对于技术团队,本书提供的不仅是工具书式的解决方案,更是一种系统思维:如何在开源协议框架下构建自主可控的数据库运维体系,如何通过扩展生态弥补功能短板。这种“既开源又专业”的特质,使PostgreSQL成为数字化转型中值得信赖的数据基石。
  中国科学院软件所研究员
  中科院时空数据管理与数据科学研究中心主任 丁治明
  国务院政府特殊津贴获得者
                                                    
                      

                   


















