首页>参考读物>计算机科学与技术>数据库

PostgreSQL实战
作者 : 谭峰 张文升 编著
丛书名 : 数据库技术丛书
出版日期 : 2018-07-06
ISBN : 978-7-111-60346-7
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 415
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书由资深数据库专业开发人员撰写,系统介绍PostgreSQL 10的丰富特性,及其在生产实践运维中的技巧,全书分为基础篇、核心篇、进阶篇,共18章。基础篇包括第1~4章,主要介绍PostgreSQL基础知识,例如安装与配置、客户端工具、数据类型、SQL高级特性等,为读者阅读核心篇和进阶篇做好准备;核心篇包括第5~9章,主要介绍PostgreSQL核心内容,例如体系结构、并行查询、事务与并发控制、分区表等;进阶篇包括第10~18章,主要介绍PostgreSQL高级内容,例如性能优化、物理复制、逻辑复制、备份与恢复、高可用、版本升级、扩展模块、Oracle数据库迁移PostgreSQL实战、PostGIS等。

图书特色

中国开源软件推进联盟PostgreSQL分会特聘专家撰写,国内多位开源数据库专家鼎力推荐。
基于PostgreSQL 10 编写,重点介绍SQL高级特性、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,涵盖大量实战用例。

PostgreSQL实战
谭峰 张文升  编著

图书前言

PostgreSQL拥有近三十年的历史,是目前最先进的开源数据库,PostgreSQL具备丰富的企业级特性,尽管在欧美、日本使用非常广泛,但在国内并没有得到广泛使用,产生这种情形的原因是多样的,其中与PostgreSQL中文资料匮乏有较大关系,目前市场上PostgreSQL中文书籍非常少。
笔者从2010年开始从事PostgreSQL DBA工作,在PostgreSQL数据库运维工程中积累了一些经验,因此想系统编写一本PostgreSQL书籍,一方面总结自己在PostgreSQL数据库运维方面的经验,另一方面希望对PostgreSQL从业者有所帮助,同时希望给PostgreSQL在国内的发展贡献一份力量;本书的另一位作者张文升拥有丰富的PostgreSQL运维经验,目前就职于探探科技任首席PostgreSQL DBA,他的加入极大地丰富了此书的内容。
近几年PostgreSQL在国内得到较快的发展,平安科技、去哪儿网、探探科技、斯凯网络等公司都在逐步使用PostgreSQL,目前阿里云、腾讯云、华为云等主流云服务提供商也提供了基于PostgreSQL数据库的云服务,相信PostgreSQL在国内将有更广阔的发展。
本书主要内容
本书系统介绍PostgreSQL的丰富特性,以及生产实践运维中的技巧,全书分为基础篇、核心篇、进阶篇。基础篇包括第1~4章,主要介绍PostgreSQL基础知识,例如安装与配置、客户端工具、数据类型、SQL高级特性等,为读者阅读核心篇和进阶篇做好准备;核心篇包括第5~9章,主要介绍PostgreSQL核心内容,例如体系结构、并行查询、事务与并发控制、分区表等;进阶篇包括第10~18章,主要介绍PostgreSQL进阶内容,相比前两篇进阶篇的难度有一定程度增加,例如性能优化、物理复制、逻辑复制、备份与恢复、高可用、版本升级、扩展模块、Oracle数据库迁移PostgreSQL实战、PostGIS等。本书18章主要内容如下。
第1章:介绍PostgreSQL起源、安装、数据库实例创建、数据库配置、数据库的启动和停止等。
第2章:介绍psql命令行客户端工具的使用和特性,例如psql元命令、psql导入导出数据、使用psql执行脚本、psql的亮点功能等。
第3章:介绍PostgreSQL各种数据类型,包括字符类型、时间/日期类型、布尔类型、网络地址类型、数组类型、范围类型、json/jsonb类型等;同时介绍了数据类型相关函数、操作符、数据类型转换。
第4章:主要介绍PostgreSQL支持的一些高级SQL特性,例如WITH查询、批量插入、RETURNING返回DML修改的数据、UPSERT、数据抽样、聚合函数、窗口函数等。
第5章:简单介绍PostgreSQL的逻辑结构和物理结构,以及PostgreSQL的守护进程、服务进程和辅助进程。
第6章:介绍PostgreSQL并行查询相关配置与应用,以及多表关联中并行的使用。
第7章:介绍事务的基本概念、性质和事务隔离级别,以及PostgreSQL多版本并发控制的原理和机制。
第8章:介绍传统分区表和内置分区表的部署、分区维护和性能测试。
第9章:介绍PostgreSQL的NoSQL特性,以及PostgreSQL全文检索。
第10章:简单介绍了服务器硬件、操作系统配置对性能的影响,介绍了一些常用的Linux性能监控工具,并着重介绍了对性能影响较大的几个方面,以及性能优化方案。
第11章:着重介绍PostgreSQL内置的测试工具pgbench,以及如何使用pgbench的内置脚本和自定义脚本进行基准测试。
第12章:主要介绍PostgreSQL物理复制和逻辑复制,并结合笔者在数据库维护过程中的实践经验分享了三个典型的流复制维护生产案例。
第13章:重点介绍PostgreSQL物理备份、增量备份,同时演示了数据库恢复的几种场景。
第14章:介绍两种高可用方案,一种是基于Pgpool-II和异步流复制的高可用方案,另一种是基于Keepalived和异步流复制的高可用方案。
第15章:介绍PostgreSQL版本命名规则、支撑策略、历史版本演进,介绍了小版本升级,最后重点介绍了大版本升级的三种方式。
第16章:主要介绍一些常见的外部扩展,例如file_fdw、pg_stat_statements、auto_explain、postgres_fdw,并重点介绍Citus外部扩展。
第17章:从实际案例出发,分享了一个Oracle数据库迁移到PostgreSQL数据库的实际项目。
第18章:简单介绍PostGIS部署、几何对象的输入、输出、存储、运算,最后介绍了PostGIS的一个典型应用场景:圈人与地理围栏。
本书特点
本书不是PostgreSQL入门书籍,不会介绍PostgreSQL每个基础知识点,本书从PostgreSQL生产实践运维出发,对PostgreSQL重点内容进行详细讲解并给出演示示例,是一本PostgreSQL数据库运维实战书籍。
本书基于PostgreSQL 10编写,书中涵盖了大量PostgreSQL 10重量级新特性,例如内置分区表、逻辑复制、并行查询增强、同步复制优选提交等,通过阅读此书,读者能够学习到PostgreSQL 10重量级新特性。
本书共18章,如果你对PostgreSQL有一定的运维经验,完全可以不按章节顺序,而是选择比较关注的章节进行阅读。如果你完全没有PostgreSQL数据库基础,建议先通过其他资料大致掌握PostgreSQL基础知识,再来阅读本书,相信你在此书的阅读过程中能有收获。
读者对象
本书适合有一定PostgreSQL数据库基础的人员阅读,特别适合以下读者:
PostgreSQL初、中级DBA:初、中级PostgreSQL DBA通过阅读此书能够提升PostgreSQL运维经验。
非PostgreSQL DBA:有Oracle、MySQL或其他关系型数据库经验的DBA,并且对PostgreSQL有一定程度的了解,通过阅读此书很容易上手PostgreSQL。
开发人员:以PostgreSQL为后端数据库的开发者,通过阅读本书能够了解PostgreSQL的丰富特性,提升PostgreSQL数据库应用水平。
云数据库从业人员:私有云、公有云数据库从业人员通过阅读此书能够更深入了解PostgreSQL特性,并提升PostgreSQL数据库运维能力。
勘误和支持
由于作者水平有限,编写时间仓促,书中难免出现错误,欢迎广大读者批评指正,读者可将书中的错误或疑问发送到francs.tan@postgres.cn,我将尽量及时给出回复,最后,衷心地希望此书能够给大家带来帮助。
致谢
首先要感谢本书另一作者张文升,他的加入极大地丰富了本书的内容,并提升了质量,我们在完成此书的全部内容后互相校对彼此编写的章节,校对过程中对有争议的内容反复交流讨论。感谢本书的策划编辑吴怡老师,她在审稿过程中提出了很多宝贵的意见。
感谢萧少聪、周正中、李海翔、周彦伟、赵振平、唐成、彭煜玮先生推荐此书。
最后感谢我的妻子,计划编写此书时妻子刚怀孕不久,当我把编写此书的想法和她沟通时她豪不犹豫地支持我,写作过程中占用了较多的家庭时间,她的支持与鼓励使我能够长期沉下心来编写直至此书完稿。

谭峰(francs)
2018年4月于杭州

上架指导

计算机\数据库

封底文字

基于DB-Engines排名,PostgreSQL是继Oracle、MySQL、SQL Server后排名第四的数据库。如果你正在犹豫PostgreSQL是否可以用于公司新业务,花两个星期按书中对你有用的任意章节进行实践,你一定会找到答案。本书将成为你的最佳检验工具,实践必出真知。
——萧少聪,中国开源软件推进联盟Postgres分会会长,Postgres中国用户会2015-2018屇主席


Francs和文升都是我的好朋友,是非常铁杆的PGer,有非常丰富的PG实战经验,本书是他们多年经验的沉淀,为他们的分享精神喝彩。作为已有一定PostgreSQL经验的读者,本书是一个非常好的指引。作为老铁,相信本书定会有令人耳目一新的地方。
——Digoal

本书内容安排独特,避开同类图书的常规内容框架,从PostgreSQL的有用特性深入展开,显示出作者匠心。写书非易事,能深夜奋笔疾书、能上心布局谋篇者,其所出之品凝聚作者们多年行业一线经验和心血,当有其所值。
                               ——李海翔,那海蓝蓝

在开源数据库领域,PostgreSQL跟MySQL可谓一时瑜亮,相得益彰。张文升是我的好朋友和前同事,他有多年PostgreSQL的实战经验,同时他是一个追求卓越、一丝不苟的技术极客,相信本书的出版,会对PostgreSQL的技术普及起到重要作用。
——周彦伟,极数云舟CEO、《MySQL运维内参》作者、中国MySQL用户组主席

如果MySQL闭源,中国将会怎样?在中兴事件炒得沸沸扬扬的今天,PostgreSQL中国社区的两位先锋张文升和谭峰联合出击,继续在中国推广世界上功能最强大的开源数据库PostgreSQL!两位一直都战斗在第一线,分享出多年的心血和积淀!内容值得期待!
——赵振平,太阳塔科技创始人,《oracle数据库精讲与疑难解析》作者

本书的两位作者谭峰、张文升是PostgreSQL中国社区的资深PGer,他们在PostgreSQL数据库领域有丰富的实践经验,相信不管是初学者还是有一定PostgreSQL经验的DBA,读了这本书,都会有很大收获。
                 ——唐成,《PostgreSQL修炼之道:从小工到专家》作者

近几年国内PostgreSQL用户群体日益壮大,产生了对PostgreSQL的开发和运维人员的大量需求。本书从PostgreSQL实践出发,深入介绍了PostgreSQL数据库主要特性,内容详实,是PostgreSQL从业者值得一读的好书。
——彭煜玮(博士),武汉大学计算机学院副教授,《PostgreSQL数据库内核分析》作者

图书序言

很高兴看到 Postgres中国用户会(以下简称:PG用户会)核心组成员谭峰和张文升的新书,书名《PostgreSQL实战》可以说是对本书最好的解读。多少次,我也试着总结经验,列出目录想要将自己所学所悟整理成书,与读者进行分享,但最终还是没能坚持。感谢两位作者为中国 PostgreSQL技术推广所作出的贡献,谨代表 PG用户会向广大开源技术爱好者推荐此书。
谭峰是PG用户会最早的成员之一,2011年我们在一次小聚会中,与另外6位志同道合的小伙伴决定一同成立 PG用户会以促进中国PostgreSQL的应用及发展。同年,在暨南大学我们举行了第一屇 “Postgres中国用户大会(大象会)”。
张文升曾经是我的同僚,在共事的短短2年里,我们东征西伐,带着对PostgreSQL的热爱与执着,将PostgreSQL部署到了民航、金融、制造、交通等行业,多少个不眠之夜依然历历在目。
自2011年PostgreSQL中国用户会成立以来,我们持续推动PostgreSQL在中国的应用,并促进与全球PostgreSQL社区的互动。7年来我们邀请了众多业界大拿来到中国进行技术分享,他们包括:
社区核心Leader:Bruce Momjian、Oleg Bartunov、Simon Riggs、Magnus Hagander
Postgres-XC Leader:铃木幸一
Postgres-XL Leader:Mason Sharp
PGPool Leader:石井达夫
PGStrom Leader:海外浩平……
同时,就职于阿里、腾讯、瀚高、探探、平安科技等企业的多位中国PostgreSQL专家也积极参加到海外的社区大会并进行主题分享,已经开始形成全球交流态势。我们都有一个共同的名字:PGer,我们是一群随时愿意与你进行PostgreSQL经验分享的志愿者,我们爱大象,我们爱PostgreSQL。
回到本书,本书基于最新的PostgreSQL 10进行编写,重点在于通过实际操作为读者全方位解读PostgreSQL的强大能力。从安装配置、连接使用、数据管理、体系架构,到NoSQL操作、性能优化、集群部署、分布式、分片、地理信息,面面俱到。
如果你是一位 PostgreSQL 的初学者,建议你可以先参考其他入门类PostgreSQL书籍,夯实基础;在工作过程中,按企业及业务的需求,再参考本书各个章节来解决实际问题,本书中的实际操作演示将大大缩短参考官方文档进行摸索的时间。当然在两位作者的精心编排下,本书所规划的学习路线,也正适合有一定PostgreSQL基础的人自行学习及提高,为日后的数据库管理工作做好准备。
本书绝对是一本值得存放于身旁的PostgreSQL参考书,特别是性能分析、集群、分片、地理信息等高技术含量的章节,可以作为日常工作的有效参考。
最后,在此祝愿本书读者开卷有益,也期待看到更多 PostgreSQL 作品在中国面世,PostgreSQL的发展离不开每一位 PGer 的贡献。

中国开源软件推进联盟Postgres分会 会长
Postgres中国用户会2015-2018屇 主席
萧少聪
2018年4月25日

作者简介

谭峰 张文升 编著:谭峰 网名francs,中国开源软件推进联盟PostgreSQL分会特聘专家,《PostgreSQL 9 Administration Cookbook》译者之一,《PostgreSQL High Performance Cookbook》英文版技术审校者之一,曾在杭州斯凯网络科技有限公司从事PostgreSQL DBA一职六年。热忠于博客分享PostgreSQL经验,分享技术博客500余篇。现就职于浙江移动负责应用上云架构管控、资源分配以及私有云建设工作。

张文升 中国开源软件推进联盟PostgreSQL分会核心成员之一。常年活跃于PostgreSQL、MySQL、Redis等开源技术社区,坚持推动PostgreSQL在中国地区的发展,多次参与组织PostgreSQL全国用户大会。近年来致力于推动PostgreSQL在互联网企业的应用以及企业PostgreSQL培训与技术支持。

图书目录

序言
前言
基 础 篇
第1章 安装与配置基础2
1.1 初识PostgreSQL2
1.1.1 PostgreSQL的特点3
1.1.2 许可3
1.1.3 邮件列表和讨论区3
1.2 安装PostgreSQL3
1.2.1 通过yum源安装4
1.2.2 通过源码编译安装5
1.2.3 设置一个软链接7
1.3 客户端程序和服务器程序8
1.3.1 客户端程序8
1.3.2 服务器程序11
1.4 创建数据库实例11
1.4.1 创建操作系统用户11
1.4.2 创建数据目录12
1.4.3 初始化数据目录13
1.5 启动和停止数据库服务器14
1.5.1 使用service方式15
1.5.2 使用pg_ctl进行管理15
1.5.3 其他启动和关闭数据库服务器的方式16
1.5.4 配置开机启动16
1.6 数据库配置基础17
1.6.1 配置文件的位置17
1.6.2 pg_hba.conf17
1.6.3 postgresql.conf19
1.6.4 允许远程访问数据库20
1.7 本章小结22
第2章 客户端工具23
2.1 pgAdmin 4简介23
2.1.1 pgAdmin 4 安装23
2.1.2 pgAdmin 4 使用23
2.2 psql功能及应用26
2.2.1 使用psql连接数据库26
2.2.2 psql元命令介绍28
2.2.3 psql导入、导出表数据31
2.2.4 psql的语法和选项介绍34
2.2.5 psql执行sql脚本36
2.2.6 psql如何传递变量到SQL37
2.2.7 使用psql定制日常维护脚本38
2.2.8 psql亮点功能39
2.3 本章小结43
第3章 数据类型44
3.1 数字类型44
3.1.1 数字类型列表44
3.1.2 数字类型操作符和数学函数46
3.2 字符类型47
3.2.1 字符类型列表47
3.2.2 字符类型函数48
3.3 时间/日期类型49
3.3.1 时间/日期类型列表49
3.3.2 时间/日期类型操作符50
3.3.3 时间/日期类型常用函数51
3.4 布尔类型52
3.5 网络地址类型53
3.5.1 网络地址类型列表54
3.5.2 网络地址操作符55
3.5.3 网络地址函数56
3.6 数组类型56
3.6.1 数组类型定义56
3.6.2 数组类型值输入56
3.6.3 查询数组元素57
3.6.4 数组元素的追加、删除、更新58
3.6.5 数组操作符58
3.6.6 数组函数59
3.7 范围类型60
3.7.1 范围类型列表60
3.7.2 范围类型边界61
3.7.3 范围类型操作符62
3.7.4 范围类型函数62
3.7.5 给范围类型创建索引63
3.8 json/jsonb类型63
3.8.1 json类型简介63
3.8.2 查询json数据64
3.8.3 jsonb与json差异64
3.8.4 jsonb与json操作符65
3.8.5 jsonb与json函数66
3.8.6 jsonb键/值的追加、删除、更新66
3.9 数据类型转换68
3.9.1 通过格式化函数进行转换68
3.9.2 通过CAST函数进行转换68
3.9.3 通过::操作符进行转换69
3.10 本章小结70
第4章 SQL高级特性71
4.1 WITH查询71
4.1.1 复杂查询使用CTE71
4.1.2 递归查询使用CTE72
4.2 批量插入74
4.2.1 方式一:INSERT INTO...SELECT...74
4.2.2 方式二:INSERT INTO VALUES (),(),...()75
4.2.3 方式三:COPY或\COPY元命令75
4.3 RETURNING返回修改的数据76
4.3.1 RETURNING返回插入的数据76
4.3.2 RETURNING返回更新后数据77
4.3.3 RETURNING返回删除的数据77
4.4 UPSERT78
4.4.1 UPSERT场景演示78
4.4.2 UPSERT语法79
4.5 数据抽样80
4.5.1 SYSTEM抽样方式81
4.5.2 BERNOULLI抽样方式82
4.6 聚合函数84
4.6.1 string_agg函数84
4.6.2 array_agg函数85
4.7 窗口函数86
4.7.1 窗口函数语法86
4.7.2 avg() OVER()87
4.7.3 row_number()88
4.7.4 rank()89
4.7.5 dense_rank ()89
4.7.6 lag()90
4.7.7 first_value ()91
4.7.8 last_value ()91
4.7.9 nth_value ()92
4.7.10 窗口函数别名的使用92
4.8 本章小结93
核 心 篇
第5章 体系结构96
5.1 逻辑和物理存储结构96
5.1.1 逻辑存储结构96
5.1.2 物理存储结构97
5.2 进程结构105
5.2.1 守护进程与服务进程105
5.2.2 辅助进程105
5.3 内存结构106
5.3.1 本地内存106
5.3.2 共享内存107
5.4 本章小结107
第6章 并行查询109
6.1 并行查询相关配置参数109
6.2 并行扫描111
6.2.1 并行顺序扫描111
6.2.2 并行索引扫描112
6.2.3 并行index-only扫描114
6.2.4 并行bitmap heap扫描115
6.3 并行聚合117
6.4 多表关联119
6.4.1 Nested loop多表关联120
6.4.2 Merge join多表关联121
6.4.3 Hash join多表关联122
6.5 本章小结124
第7章 事务与并发控制125
7.1 事务和并发控制的概念125
7.1.1 事务的基本概念和性质125
7.1.2 并发引发的现象126
7.1.3 ANSI SQL标准的事务隔离级别129
7.2 PostgreSQL的事务隔离级别130
7.2.1 查看和设置数据库的事务隔离级别131
7.2.2 修改全局的事务隔离级别132
7.2.3 查看当前会话的事务隔离级别132
7.2.4 设置当前会话的事务隔离级别132
7.2.5 设置当前事务的事务隔离级别133
7.3 PostgreSQL的并发控制133
7.3.1 基于锁的并发控制134
7.3.2 基于多版本的并发控制134
7.3.3 通过pageinspect观察MVCC137
7.3.4 使用pg_repack解决表膨胀问题140
7.3.5 支持事务的DDL140
7.4 本章小结141
第8章 分区表142
8.1 分区表的意义142
8.2 传统分区表143
8.2.1 继承表143
8.2.2 创建分区表145
8.2.3 使用分区表146
8.2.4 查询父表还是子表147
8.2.5 constraint_exclusion参数148
8.2.6 添加分区150
8.2.7 删除分区150
8.2.8 分区表相关查询151
8.2.9 性能测试152
8.2.10 传统分区表注意事项155
8.3 内置分区表155
8.3.1 创建分区表155
8.3.2 使用分区表157
8.3.3 内置分区表原理探索157
8.3.4 添加分区158
8.3.5 删除分区158
8.3.6 性能测试159
8.3.7 constraint_exclusion参数161
8.3.8 更新分区数据162
8.3.9 内置分区表注意事项162
8.4 本章小结163
第9章 PostgreSQL的NoSQL特性164
9.1 为jsonb类型创建索引164
9.2 json、jsonb读写性能测试165
9.2.1 创建json、jsonb测试表165
9.2.2 json、jsonb表写性能测试166
9.2.3 json、jsonb表读性能测试166
9.3 全文检索对json和jsonb数据类型的支持169
9.3.1 PostgreSQL全文检索简介170
9.3.2 json、jsonb全文检索实践173
9.4 本章小结176
进 阶 篇
第10章 性能优化180
10.1 服务器硬件180
10.2 操作系统优化181
10.2.1 常用Linux性能工具181
10.2.2 Linux系统的I/O调度算法189
10.2.3 预读参数调整190
10.2.4 内存的优化190
10.3 数据库调优193
10.3.1 全局参数调整193
10.3.2 统计信息和查询计划194
10.3.3 索引管理与维护201
10.4 本章小结203
第11章 基准测试与pgbench204
11.1 关于基准测试204
11.1.1 基准测试的常见使用场景205
11.1.2 基准测试衡量指标205
11.1.3 基准测试的原则205
11.2 使用pgbench进行测试206
11.2.1 pgbench的测试结果报告206
11.2.2 通过内置脚本进行测试207
11.2.3 使用自定义脚本进行测试210
11.2.4 其他选项212
11.3 本章小结214
第12章 物理复制和逻辑复制215
12.1 异步流复制216
12.1.1 以拷贝数据文件方式部署流复制216
12.1.2 以pg_basebackup方式部署流复制222
12.1.3 查看流复制同步方式223
12.2 同步流复制224
12.2.1 synchronous_commit参数详解224
12.2.2 配置同步流复制225
12.2.3 同步流复制的典型“陷阱”226
12.3 单实例、异步流复制、同步流复制性能测试227
12.3.1 读性能测试228
12.3.2 写性能测试230
12.4 流复制监控231
12.4.1 pg_stat_replication231
12.4.2 监控主备延迟233
12.4.3 pg_stat_wal_receiver234
12.4.4 相关系统函数235
12.5 流复制主备切换236
12.5.1 判断主备角色的五种方法236
12.5.2 主备切换之文件触发方式238
12.5.3 主备切换之pg_ctl promote方式240
12.5.4 pg_rewind241
12.6 延迟备库244
12.6.1 延迟备库的意义244
12.6.2 延迟备库部署244
12.6.3 recovery_min_apply_delay参数对同步复制的影响246
12.7 同步复制优选提交247
12.7.1 synchronous_standby_names参数详解248
12.7.2 基于优先级的同步备库249
12.7.3 基于Quorum的同步备库250
12.8 级联复制251
12.8.1 级联复制物理架构252
12.8.2 级联复制部署253
12.9 流复制维护生产案例255
12.9.1 案例一:主库上创建表空间时备库宕机255
12.9.2 案例二:备库查询被中止257
12.9.3 案例三:主库上的WAL被覆盖导致备库不可用259
12.10 逻辑复制265
12.10.1 逻辑解析265
12.10.2 逻辑复制架构267
12.10.3 逻辑复制部署268
12.10.4 逻辑复制DML数据验证273
12.10.5 逻辑复制添加表、删除表274
12.10.6 逻辑复制启动、停止276
12.10.7 逻辑复制配置注意事项和限制277
12.10.8 逻辑复制延迟测试278
12.11 本章小结280
第13章 备份与恢复281
13.1 备份与恢复概述281
13.2 增量备份283
13.2.1 开启WAL归档284
13.2.2 创建基础备份285
13.3 指定时间和还原点的恢复288
13.3.1 恢复到最近时间点289
13.3.2 恢复到指定时间点291
13.3.3 恢复到指定还原点292
13.3.4 恢复到指定事务294
13.3.5 恢复到指定时间线296
13.4 SQL转储和文件系统级别的备份298
13.4.1 SQL转储298
13.4.2 文件系统级别的备份301
13.5 本章小结301
第14章 高可用302
14.1 Pgpool-II+异步流复制实现高可用303
14.1.1 pgpool部署架构图304
14.1.2 pgpool部署305
14.1.3 PCP管理接口配置312
14.1.4 pgpool方案高可用测试313
14.1.5 pgpool方案常见错误处理318
14.2 基于Keepalived+异步流复制实现高可用321
14.2.1 Keepalived+异步流复制部署架构图321
14.2.2 Keepalived+异步流复制高可用方案部署322
14.2.3 Keepalived配置324
14.2.4 Keepalived方案高可用测试329
14.3 本章小结333
第15章 版本升级334
15.1 版本介绍334
15.2 小版本升级335
15.3 大版本升级336
15.3.1 通过pg_dumpall进行大版本升级336
15.3.2 通过pg_upgrade进行大版本升级339
15.3.3 使用pglogical升级大版本346
15.4 本章小结350
第16章 扩展模块351
16.1 CREATE EXTENSION351
16.2 pg_stat_statements353
16.3 auto_explain356
16.4 pg_prewarm357
16.5 file_fdw359
16.5.1 SQL/MED简介359
16.5.2 file_fdw部署360
16.5.3 使用file_fdw分析数据库日志362
16.6 postgres_fdw364
16.6.1 postgres_fdw部署364
16.6.2 postgres_fdw外部表支持写操作366
16.6.3 postgres_fdw支持聚合函数下推367
16.7 Citus369
16.7.1 Citus特性370
16.7.2 Citus安装370
16.7.3 Citus管理372
16.7.4 创建分布表373
16.7.5 Citus参数配置373
16.7.6 Citus常用功能374
16.8 本章小结377
第17章 Oracle数据库迁移PostgreSQL实践378
17.1 项目准备378
17.2 数据库对象迁移379
17.3 应用代码改造380
17.4 数据迁移测试384
17.5 功能测试和性能测试388
17.6 生产割接389
17.7 oracle_fdw部署过程中的常见错误389
17.8 本章小结391
第18章 PostGIS392
18.1 安装与配置392
18.2 创建GIS数据库393
18.3 几何对象393
18.3.1 几何对象的输入394
18.3.2 几何对象的存储394
18.3.3 几何对象的输出395
18.3.4 几何对象的运算395
18.4 应用场景:圈人与地理围栏397
18.4.1 空间索引398
18.4.2 地理围栏399
18.5 本章小结399

教学资源推荐
作者: John Adolph Palinski
作者: [美] 亚伯拉罕·西尔伯沙茨 (Abraham Silberschatz) [美] 亨利·F. 科思 (Henry F. Korth) [印] S. 苏达尔尚(S. Sudarshan) 著
参考读物推荐
作者: [印度]A. 奥利(A. Ohri) 著
作者: [美]W. H. 因蒙(W. H. Inmon) 丹尼尔·林斯泰特(Daniel Linstedt) 玛丽· 莱文斯(Mary Levins) 著
作者: [美] 坎南·曼尼(Kannan Mani) 唐·沙利文(Don Sullivan) 著
作者: 胡争 范欣欣 著