概述
这本书大约有350页,包含13章。除了文字内容外,书中还包含了大量代码(主要是SQL查询)和各种表格。阅读难度大约为中级。每一章都附有一个简短的总结。
简要概述
我在阅读这本书时,它还是第11版。然而,作者会不断更新内容——第一章通常会介绍数据库的最新功能。在简短的介绍之后,紧接着是关于事务和锁的章节——这并不令人意外,因为PostgreSQL中的每个操作都是在事务中执行的。讨论了简单事务以及使用SAVEPOINT的复杂和长事务。此外,还涉及FOR SHARE和FOR UPDATE、事务隔离级别、存储优化等主题。
继续往下看。有一章是关于索引的创建、类型(B‑tree、GIN、GiST等)、用途和应用的。这一章非常详细且信息丰富。接下来是一个简短的章节,讨论高级功能(分组、排序、聚合、窗口函数)——同样非常有用。之后是有关日志的章节,讨论了查询日志、日志配置和系统查询。
接下来是一章关于查询优化的内容。讨论了查询优化器在执行查询前进行的内部优化,以及开发者可以自己改进查询的外部方法。还涉及JOINs、分区等主题。
之后是关于存储过程的章节。我并不倾向于将业务逻辑(即使是一小部分)交给数据库处理,因此无法完全评价这一章,但我也承认有些情况下存储过程是合适的。
下一章是关于安全性的内容。包括网络安全(pg_hba)、访问权限、角色委派和用户删除。展示了如何在系统不同层面保护数据。非常有趣且实用。
接下来有几章关于备份的内容。第一章重点讨论备份的创建和恢复。第二章是关于复制的。这两章都非常信息丰富且引人入胜。
接下来的一章是关于PostgreSQL扩展的内容。介绍了安装和使用扩展(contrib和第三方)的方法。并列举了一些最受欢迎的模块,这些模块扩展了PostgreSQL的功能。
最后一章之一是关于PostgreSQL故障排除的内容。讨论了分析活动(pg_stat_activity)、识别瓶颈、日志工具、索引操作、内存管理等实用方法。最后一章则是帮助将现有数据库(例如MySQL)迁移到PostgreSQL。
个人观点
这本书提供了关于最流行的关系型数据库之一——PostgreSQL的实用示例。我特别喜欢这本书的流畅性。所有章节都非常连贯且相互补充。尽管有些地方对我来说有些挑战,因为我对PostgreSQL并没有如此深入的了解。然而,对于想深入学习数据库细节的人来说,这本书非常有用,例如区分GIN索引和GiST索引,或理解ACCESS SHARE、ROW SHARE、SHARE UPDATE EXCLUSIVE等锁定模式。另一方面,书中也涵盖了许多日常使用的热门主题,如事务、性能分析、复制等,因此这本书无疑对所有后端开发者都非常有价值。