编辑推荐

由浅入深PostgreSQL》根据一位资深PostgreSQL专家多年的从业经验,深入介绍了开源数据库管理系统PostgreSQL的主要特性,包括并发控制、索引、高级SQL处理、日志和统计、查询优化、存储过程、安全性、高可用等。《由浅入深PostgreSQL》原理讲解深入浅出,将官方手册中较难理解的内容简单明了地展示给读者。《由浅入深PostgreSQL》作者是具有18年PG(PostgreSQL)数据库经验的国外大牛。译者彭煜玮先生,武汉大学计算机学院副教授,PostgreSQL中国社区的核心成员,培养输出的数据库人才不计其数。《由浅入深PostgreSQL》适合数据库开发人员、DBA、数据分析师、架构师等。

内容简介

  《由浅入深PostgreSQL》从一位资深PostgreSQL专家在多年咨询、技术支持工作中的切身体会出发,深入介绍了开源数据库管理系统PostgreSQL9.6版本中的主要特性,其内容涵盖了作为一个PostgreSQL数据库从业人员经常会接触到的主题:事务和锁定、索引的使用、高级SQL处理、日志文件和统计信息、查询优化、存储过程、安全性、备份与恢复、复制、各类扩展、故障排查、系统迁移。作者通过亲身经历和直观的例子,详细介绍了PostgreSQL主要特性的工作原理、常用配置以及常见的误区,是一本实用性很强的PostgreSQL进阶指南,能帮助有一定PostgreSQL知识的读者深入了解PostgreSQL中更多更全面的高级特性。
  《由浅入深PostgreSQL》适合数据库管理人员和开发人员了解和学习PostgreSQL。通过阅读该书,读者可以对PostgreSQL有一个全面透彻的了解。

作者简介

  彭煜玮,男,2008年6月毕业于武汉大学并获得工学博士学位,现任武汉大学计算机学院副教授、硕士生导师。任中国计算机学会数据库专业委员会委员、ACMSIGMOD中国分部委员、PostgreSQL中国用户协会常务委员。长期从事数据库、大数据的教学和研究。著有《PostgreSQL数据库内核分析》一书,译著包括《PostgreSQL9.x之巅》《PostgreSQL文档》《Greenplum文档》等。

目录

第1章PostgreSQL概述
1.1PostgreSQL9.6中有什么新技术
1.1.1理解新的数据库管理功能
1.1.2探究新的SQL和开发者相关的功能
1.1.3使用新的备份和复制功能
1.1.4理解性能相关的特性
1.2总结

第2章理解事务和锁定
2.1使用PostgreSQL事务
2.1.1在事务内处理错误
2.1.2使用保存点
2.1.3事务性DDL
2.2理解基本的锁定
2.3使用FORSHARE和FORUPDATE
2.4理解事务隔离级别
2.5观察死锁和类似的问题
2.6利用咨询锁
2.7优化存储以及控制清理
2.7.1配置VACUUM和autovacuum
2.7.2观察工作中的VACUUM
2.7.3利用snapshottooold
2.8总结

第3章使用索引
3.1理解简单查询和代价模型
3.1.1使用EXPLAIN
3.1.2深究PostgreSQL代价模型
3.1.3部署简单的索引
3.1.4使用排序输出
3.1.5一次使用多个索引
3.1.6以一种聪明的方式使用索引
3.2使用聚簇表改善速度
3.2.1聚簇表
3.2.2使用只用索引的扫描
3.3理解另外的B-树特性
3.3.1组合索引
3.3.2增加函数索引
3.3.3减少空间消耗
3.3.4在建立索引时添加数据
3.4引入操作符类
3.5理解PostgreSQL索引类型
3.5.1Hash索引
3.5.2GiST索引
3.5.3GIN索引
3.5.4SP-GiST索引
3.5.5BRIN索引
3.5.6增加额外索引
3.6用模糊搜索实现更好的回答
3.6.1利用pg_trgm
3.6.2加速LIKE查询
3.6.3处理正则表达式
3.7理解全文搜索-FTS
3.7.1比较字符串
3.7.2定义GIN索引
3.7.3调试用户的搜索
3.7.4收集词统计信息
3.7.5利用排除操作符
3.8总结

第4章处理高级SQL
4.1引入分组集
4.1.1装载一些案例数据
4.1.2应用分组集
4.1.3组合分组集和FILTER子句
4.2使用有序集
4.3理解假想聚集
4.4利用窗口函数和分析
4.4.1划分数据
4.4.2在窗口中排序数据
4.4.3使用滑动窗口
4.4.4提取窗口子句
4.4.5使用内建窗口函数
4.5编写自己的聚集
4.5.1创建简单的聚集
4.5.2为并行查询增加支持
4.5.3改进效率
4.5.4编写假想聚集
4.6总结

第5章日志文件和系统统计信息
5.1收集运行时统计信息
5.2创建日志文件
5.3总结

第6章优化查询获得良好性能
6.1学习优化器的行为
6.2理解执行计划
6.2.1系统地处理计划
6.2.2发现问题
6.3理解并且固定连接
6.3.1正确使用连接
6.3.2处理外连接
6.3.3理解join_collapse_limit变量
6.4启用和禁用优化器设置
6.5分区数据
6.5.1创建分区
6.5.2应用表约束
6.5.3修改继承的结构
6.5.4在分区结构中移进和移出表
6.5.5清理数据
6.6为好的查询性能调整参数
6.6.1加速排序
6.6.2加速管理任务
6.7总结

第7章编写存储过程
7.1理解存储过程语言
7.2理解各种存储过程语言
7.2.1引入PL/pgSQL
7.2.2引入PL/Perl
7.2.3引入PL/Python
7.3改进存储过程的性能
7.4使用存储过程
7.5总结

第8章管理PostgreSQL安全性
8.1管理网络安全性
8.1.1理解绑定地址和连接
8.1.2管理pg_hba.conf
8.1.3处理实例级安全性
8.1.4定义数据库级安全性
8.1.5调整方案级权限
8.1.6使用表
8.1.7处理列级安全性
8.1.8配置默认特权
8.2深入行级安全性-RLS
8.3检查权限
8.4再分配对象和删除用户
8.5总结

第9章处理备份和恢复
9.1执行简单转储
9.1.1运行pg_dump
9.1.2传递口令和连接信息
9.1.3提取数据的子集
9.1.4处理多种数据格式
9.2重放备份
9.3处理全局数据
9.4总结

第10章理解备份和复制
10.1理解事务日志
10.1.1察看事务日志
10.1.2理解检查点
10.1.3优化事务日志
10.2事务日志归档和恢复
10.2.1为归档进行配置
10.2.2配置pg_hba.conf文件
10.2.3创建基础备份
10.2.4重放事务日志
10.2.5清理事务日志归档
10.3设置异步复制
10.3.1执行基本设置
10.3.2停止和继续复制
10.3.3检查复制以确保可用性
10.3.4执行故障转移以及理解时间线
10.3.5管理冲突
10.3.6让复制更可靠
10.4升级到同步复制
10.5利用复制槽
10.5.1处理物理复制槽
10.5.2处理逻辑复制槽
10.6总结

第11章选定有用的扩展
11.1理解扩展如何工作
11.2利用contrib模块
11.2.1使用adminpack
11.2.2应用布隆过滤器
11.2.3部署btree_gist和btree_gin
11.2.4Dblink-考虑逐步淘汰
11.2.5用file_fdw取得文件数据
11.2.6使用pageinspect检查存储
11.2.7用pg_buffercache研究缓冲
11.2.8用pgcrypto加密数据
11.2.9用pg_prewarm预热缓冲
11.2.10用pg_stat_statements检查性能
11.2.11用pgstattuple检查存储
11.2.12用pg_trgm进行模糊搜索
11.2.13使用postgres_fdw连接到远程服务器
11.3其他有用的扩展
11.4总结

第12章在PostgreSQL中排查错误
12.1着手处理一个陌生的数据库
12.2检查pg_stat_activity
12.3检查慢查询
12.3.1检查个体查询
12.3.2用perf深入研究
12.4检查日志
12.5检查缺失的索引
12.6检查内存和I/O
12.7了解值得注意的错误场景
12.7.1面对clog损坏
12.7.2理解检查点消息
12.7.3管理损坏的数据页面
12.7.4粗心的连接管理
12.7.5与表膨胀斗争
12.8总结

第13章迁移到PostgreSQL
13.1迁移SQL语句到PostgreSQL
13.1.1使用侧连接
13.1.2使用分组集
13.1.3使用WITH子句-公共表表达式
13.1.4使用WITHRECURSIVE子句
13.1.5使用FILTER子句
13.1.6使用窗口函数
13.1.7使用有序集——WITHINGROUP子句
13.1.8使用TABLESAMPLE子句
13.1.9使用limit/offset
13.1.10使用OFFSET
13.1.11使用临时表
13.1.12匹配时间序列中的模式
13.2从Oracle转移到PostgreSQL
13.2.1使用oracle_fdw扩展转移数据
13.2.2使用ora2pg从Oracle迁移
13.2.3常见的陷阱
13.3从MySQL或MariaDB转移到PostgreSQL
13.3.1处理MySQL和MariaDB中的数据
13.3.2迁移数据和模式
13.4总结

前言/序言

  PostgreSQL是一种开源数据库管理工具,它可以被用于处理大型数据集(大数据)并且可以被用作一种JSON文档数据库。它也在软件和Web领域中有很多应用。《由浅入深PostgreSQL》将让读者能够构建更好的PostgreSQL应用并且更有效地管理数据库。
  《由浅入深PostgreSQL》所涵盖的内容
  第1章PostgreSQL概述,使读者从总体上了解PostgreSQL及其特性。读者将学到PostgreSQL中可用的新事物和新功能。
  第2章理解事务和锁定,将涵盖任意数据库系统最重要的方面之一。没有事务的存在,数据库通常无法正确地工作。因此理解事务和锁定对于性能以及专业工作来说都是很关键的。
  第3章使用索引,涵盖了读者需要了解的与索引有关的方方面面。索引是性能的关键因素,因此它是获得良好用户体验和高吞吐量的重要基石。索引的所有重要方面都会在本章中被涵盖。
  第4章处理高级SQL,将介绍现代SQL的一些最重要的概念。读者将学到窗口函数以及其他重要的更现代化的SQL。
  第5章日志文件和系统统计信息,将引导读者通过更多管理任务,例如日志文件管理和监控。读者将学到如何观察其服务器并且从PostgreSQL中提取运行时信息。
  第6章优化查询获得良好性能,将告诉读者所有有关良好PostgreSQL性能的内容。本章将涵盖SQL调优以及内存管理的信息。
  第7章编写存储过程,教会读者与服务器端代码相关的更高级的主题。本章涵盖最重要的服务器端编程语言及其他重要的方面。
  第8章管理PostgreSQL安全性,本章的目的是帮助读者提高服务器的安全性。本章会介绍从用户管理到行级安全性的各种特性。有关加密的内容也包括在本章中。
  第9章处理备份和恢复,涵盖有关备份和数据恢复的所有内容。读者将学到备份其数据以及在遇到灾难时恢复数据。
  第10章理解备份和复制,本章与冗余有关。读者将学到异步以及同步复制PostgreSQL数据库系统。本章将尽可能全面地介绍所有的现代特性。
  第11章选定有用的扩展,本章描述对PostgreSQL增加额外功能的被广泛使用的模块。读者将学到最常见的扩展。
  第12章在PostgreSQL中排查错误,本章提供了一种系统的方法以修复PostgreSQL中的问题。它将使读者能够定位常见的问题并且以一种有条理的方式解决问题。
  第13章迁移到PostgreSQL,它是《由浅入深PostgreSQL》的最后一章并且向读者展示了从商业数据库到PostgreSQL的路径。本章将涵盖当今能被迁移的最重要的数据库。
  需要的预备知识
  《由浅入深PostgreSQL》的读者很广泛。为了能跟得上《由浅入深PostgreSQL》中给出的例子,至少要有一些SQL甚至PostgreSQL的经验(不过这并非硬性要求)。一般来说,如果能熟悉Uux命令行会更好。
  适合人群
  《由浅入深PostgreSQL》是为那些想要对PostgreSQL了解更多并且不满足于基本知识的人而写。其目标是写一本更加深入的书,并且以一种清晰且易懂的方式解释最重要的内容。

其他推荐