PostgreSQL数据库实战派
  • 推荐0
  • 收藏0
  • 浏览172

PostgreSQL数据库实战派

赵渝强 (作者)  吴宏伟 (责任编辑)

  • 书  号:9787121466021
  • 出版日期:2023-11-01
  • 页  数:
  • 开  本:
  • 出版状态:上市销售
  • 维护人:博文小编
《PostgreSQL数据库实战派》是基于作者多年的教学与实践撰写的,重点介绍PostgreSQL的核心原理与体系架构,涉及开发、运维、管理与架构等内容。
《PostgreSQL数据库实战派》共12章,涉及以下几方面内容:PostgreSQL基础,安装与配置PostgreSQL,管理数据库与数据库实例,管理数据库对象,并行查询,事务与并发控制,应用程序开发,管理数据库安全,备份与恢复,监控、诊断与优化数据库,PostgreSQL的高可用架构,以及从Oracle迁移到PostgreSQL。
《PostgreSQL数据库实战派》是基于PostgreSQL 15.3撰写的,适合对PostgreSQL感兴趣的平台架构师、运维管理人员和项目开发人员阅读。无论读者是否接触过数据库技术,只要具备基础的Linux知识和SQL知识,就能够通过阅读本书快速掌握PostgreSQL并累积实战经验。根据本书介绍的实验步骤,读者可以在实际的项目生产环境中快速应用并实施PostgreSQL。
基于PostgreSQL 15。只要具备基础的Linux知识和SQL知识,就能够快速掌握PostgreSQL并累积实战经验。
赵渝强,近20年IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问,华为认证讲师。曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大数据、数据库、中间件技术和Java技术。
随着信息技术的不断发展及互联网行业规模的扩大,作为开源数据库的PostgreSQL得到了广泛的应用和发展。目前,PostgreSQL已成为关系型数据库领域中非常重要的一员。本书正是在这样的背景下撰写的。
本书总结了作者在PostgreSQL方面的经验,希望对相关从业方向的从业者和学习者有所帮助,同时希望为PostgreSQL在国内的发展贡献自己的力量。通过阅读本书,读者不仅可以全面且系统地掌握PostgreSQL,还可以在实际工作中灵活运用。
1.本书特色
本书聚焦PostgreSQL并基于PostgreSQL 15.3撰写,对PostgreSQL的相关知识进行全面深入的讲解,并辅以实战。本书有如下几方面特色。
(1)一线技术,系统全面。
本书全面且系统地介绍了目前开源关系型数据库领域中的PostgreSQL,涉及PostgreSQL的方方面面。作者力求用一本书覆盖PostgreSQL的核心内容。
(2)精雕细琢,阅读性强。
本书采用通俗易懂的语言,并且经过了多次打磨,力求精确。另外,作者注重前后章节的承上启下,没有数据库方面经验的读者也可以轻松地读懂本书。
(3)从零开始,循序渐进。
本书从最基础的内容开始讲解并逐步深入,因此初级、中级和高级技术人员都可以从中学到“干货”。本书先介绍PostgreSQL的基础内容,再全面深入PostgreSQL的体系架构,从而真正做到帮助读者从初学者成长为开发高手。
(4)深入原理,言简意赅。
本书深入且全面地介绍了PostgreSQL的底层原理和机制。作者力求采用言简意赅的语言,以帮助读者尽可能缩短阅读本书的时间。
(5)由易到难,重点解析。
本书的内容安排遵循由易到难的原则,并且覆盖了PostgreSQL的各个方面。本书对重点和难点进行重点讲解,对易错点和注意点进行提示说明,以帮助读者克服在学习过程中遇到的困难。
(6)突出实战,注重效果。
本书采用理论讲解+动手实操的方式撰写,使读者在阅读完本书后具有动手实操的体验。本书中的所有操作步骤都经过了作者的亲测。
(7)实践方案,指导生产。
本书以实践为主,所有的示例拿来即可运行。本书提供了大量的技术解决方案,可以在实际的生产环境中为技术人员提供相应的指导。
2.阅读本书,您能学到什么
 掌握PostgreSQL的基础内容、安装与配置。
 掌握PostgreSQL的体系架构。
 掌握PostgreSQL的用户管理与访问控制。
 灵活运用PostgreSQL的各种数据库对象。
 熟练编写PostgreSQL的应用程序。
 掌握PostgreSQL的事务与锁。
 掌握PostgreSQL的备份与恢复。
 掌握PostgreSQL的高可用架构。
 掌握PostgreSQL的性能优化与运维管理。
 掌握PostgreSQL的监控。
 掌握从Oracle到PostgreSQL的迁移。
希望通过阅读本书,读者可以快速、系统地掌握PostgreSQL,快速从初学者向精通级的实战派高手迈进。
3.读者对象
本书既适合PostgreSQL的初学者阅读,又适合作为想进一步提升的中级和高级技术人员的参考书。相信不同级别的技术从业者都能从本书中学到“干货”。
本书的读者对象如下。
◎ 初学数据库技术的自学者。 ◎ 培训机构的老师和学员。
◎ 数据库管理员。 ◎ 相关专业的大学毕业生。
◎ 中级和高级技术人员。 ◎ 测试工程师。
◎ 开发工程师。 ◎ 技术运维人员。
◎ PostgreSQL的爱好者。 ◎ 技术管理人员。
◎ 高等院校的老师和学生。
赵渝强
北京

目录

第1章 PostgreSQL基础 1
1.1 PostgreSQL简介 1
1.1.1 什么是PostgreSQL 1
1.1.2 PostgreSQL的功能特性 2
1.2 PostgreSQL的体系架构 3
1.2.1 逻辑存储结构 4
1.2.2 物理存储结构 9
1.2.3 进程结构 17
1.2.4 内存结构 23
第2章 安装与配置PostgreSQL 25
2.1 安装CentOS操作系统 25
2.2 安装PostgreSQL服务器 35
2.3 【实战】使用PostgreSQL客户端工具 37
2.3.1 命令行客户端psql 38
2.3.2 图形化客户端pgAdmin 4 41
2.4 PostgreSQL服务器端的主配置文件详解 45
2.4.1 基础文件 46
2.4.2 连接和认证 46
2.4.3 资源使用 47
2.4.4 预写日志 49
2.4.5 复制 50
2.4.6 查询调优 51
2.4.7 错误报告和日志 53
2.4.8 进程标题 54
2.4.9 运行时统计数据 55
2.4.10 自动清理 55
2.4.11 客户端连接默认值 56
2.4.12 锁管理 57
2.4.13 版本和平台兼容性 58
2.4.14 错误处理 58
2.4.15 预置选项 59
第3章 管理数据库与数据库实例 60
3.1 【实战】管理数据库和数据库模板 60
3.1.1 管理数据库的基本操作 60
3.1.2 管理数据库模板 64
3.2 【实战】管理数据库的扩展 65
3.2.1 使用扩展访问外部数据源 65
3.2.2 数据预热扩展pg_prewarm 75
3.2.3 共享缓冲区监控扩展pg_buffercache 79
3.2.4 预写日志解析扩展pg_walinspect 81
3.3 管理数据库实例 83
3.4 基于PostgreSQL的分布式数据库——Citus 85
3.4.1 Citus基础 85
3.4.2 安装与配置Citus 86
3.4.3 Citus中表的类型 91
3.4.4 Citus的配置参数 96
3.5 基于PostgreSQL的分布式数据库——Greenplum 96
3.5.1 Greenplum简介 96
3.5.2 安装与配置Greenplum 98
3.5.3 Greenplum中表的类型 101
第4章 管理数据库对象 105
4.1 数据库与模式 105
4.2 创建与管理表 107
4.2.1 PostgreSQL的数据类型 107
4.2.2 【实战】PostgreSQL表的基本操作 110
4.2.3 数据的约束条件 111
4.2.4 表中的碎片 115
4.2.5 统计信息 118
4.2.5.1 查看数据库的统计信息 118
4.2.5.2 使用analyze命令手动收集数据库的统计信息 120
4.2.5.3 了解统计信息收集器的配置项 121
4.2.6 【实战】使用PostgreSQL的临时表 122
4.3 在查询时使用索引 123
4.3.1 索引的基础知识 123
4.3.2 索引的类型 127
4.3.3 【实战】索引的维护 130
4.3.3.1 使用仅索引扫描 130
4.3.3.2 避免重复索引 131
4.3.3.3 清除未使用的索引 132
4.4 使用视图简化查询语句 133
4.4.1 什么是视图 133
4.4.2 视图的基本操作 133
4.4.3 【实战】在PostgreSQL中使用临时视图 135
4.4.4 物化视图 136
4.5 序列 138
第5章 并行查询 141
5.1 并行查询是如何工作的 141
5.2 何时会用到并行查询 142
5.3 【实战】查看并行查询的执行计划 143
5.3.1 并行扫描 144
5.3.2 并行连接 146
5.4 并行查询的限制 151
第6章 事务与并发控制 152
6.1 PostgreSQL的事务 152
6.1.1 事务简介 152
6.1.2 控制事务 154
6.1.2.1 事务的控制语句 154
6.1.2.2 【实战】使用事务的控制语句 154
6.1.3 事务的并发 157
6.1.3.1 事务隔离级别 157
6.1.3.2 【实战】事务的脏读 158
6.1.3.3 【实战】事务的不可重复读 159
6.2 PostgreSQL的锁 161
6.2.1 锁的类型 162
6.2.2 死锁 168
6.2.2.1 【实战】模拟死锁的产生 169
6.2.2.2 如何避免死锁 171
第7章 应用程序开发 173
7.1 PL/pgSQL基础 173
7.1.1 【实战】开发第一个PL/pgSQL程序 174
7.1.2 使用PL/pgSQL的基本数据类型 175
7.1.3 使用PL/pgSQL的高级数据类型 176
7.2 PL/pgSQL面向过程编程 177
7.2.1 在PL/pgSQL程序中使用条件判断 177
7.2.2 在PL/pgSQL程序中使用循环 178
7.2.3 在PL/pgSQL程序中使用游标 180
7.2.4 在PL/pgSQL程序中处理例外 182
7.2.4.1 处理系统预定义例外 182
7.2.4.2 处理用户自定义例外 183
7.3 【实战】综合案例——基于员工表统计各工资段的
员工人数及各部门的工资总额 184
7.4 使用PL/pgSQL开发存储过程与存储函数 187
7.4.1 存储过程与存储函数 187
7.4.2 【实战】创建和使用存储过程 187
7.4.3 【实战】创建和使用存储函数 189
7.4.4 【实战】设置存储过程中的inout参数 189
7.4.5 【实战】在inout参数中使用游标 191
7.5 使用PL/pgSQL开发触发器 192
7.5.1 常规触发器 192
7.5.1.1 常规触发器的定义 192
7.5.1.2 【实战】利用常规触发器实现安全性检查 193
7.5.1.3 【实战】利用常规触发器进行数据确认 194
7.5.1.4 【实战】利用常规触发器实现审计 195
7.5.2 事件触发器 197
第8章 管理数据库安全 199
8.1 用户管理 199
8.1.1 用户与角色 199
8.1.2 管理用户的密码 204
8.1.2.1 使用SQL语句管理用户的密码 205
8.1.2.2 使用passwordcheck插件检查密码的复杂度 206
8.1.3 预定义角色 207
8.2 权限管理 207
8.2.1 【实战】在创建用户时指定的权限 207
8.2.2 使用grant命令和revoke命令管理的权限 210
8.2.3 在授权时使用admin option选项和grant option选项 215
8.2.4 使用组角色管理权限 216
8.2.5 使用set role命令显示启用角色的权限 219
8.3 审计管理 222
8.3.1 PostgreSQL的审计日志功能 222
8.3.2 PostgreSQL的审计扩展插件pgaudit 224
第9章 备份与恢复 228
9.1 备份与恢复的基本概念 228
9.1.1 数据库的故障类型 228
9.1.2 备份的分类 231
9.2 设置PostgreSQL的日志归档 232
9.2.1 【实战】设置PostgreSQL的归档模式 232
9.2.2 【实战】管理过期的归档日志文件 235
9.2.2.1 通过配置脚本定期删除归档日志文件 235
9.2.2.2 通过手动方式删除归档日志文件 236
9.3 通过SQL转储实现逻辑备份与恢复 238
9.3.1 【实战】使用pg_dump完成SQL转储 238
9.3.2 【实战】使用pg_dumpall完成SQL转储 244
9.4 文件系统级别的备份与恢复 247
9.4.1 【实战】第一个PostgreSQL文件系统级别的备份与恢复 248
9.4.2 【实战】使用pg_basebackup完成热备份与恢复 250
9.4.2.1 在主数据库服务器上使用pg_basebackup 251
9.4.2.2 在从数据库服务器上使用pg_basebackup 253
9.4.2.3 使用pg_basebackup的备份进行恢复 254
9.5 【实战】连续归档与基于时间点的恢复 257
9.5.1 创建基础备份与连续归档 257
9.5.2 执行基于时间点的数据恢复 260
9.5.3 执行恢复到指定恢复点的数据恢复 261
9.5.4 恢复到指定事务上 262
9.5.5 恢复到最近时间点上 263
9.6 使用第三方备份恢复工具pg_rman 264
9.6.1 安装与配置pg_rman 264
9.6.2 初始化pg_rman 267
9.6.3 使用pg_rman进行备份 269
9.6.3.1 使用pg_rman进行全量备份 269
9.6.3.2 使用pg_rman进行增量备份 270
9.6.4 使用pg_rman进行恢复 272
9.6.4.1 原地覆盖式恢复 273
9.6.4.2 设置新的$PGDATA目录式恢复 275
第10章 监控、诊断与优化数据库 276
10.1 使用pgbench进行基准测试 276
10.1.1 数据库基准测试简介 276
10.1.2 【实战】使用pgbench进行数据库基准测试 276
10.1.2.1 使用pgbench进行基准测试 278
10.1.2.2 使用pgbench内置脚本进行基准测试 281
10.1.2.3 使用自定义脚本进行基准测试 284
10.2 使用扩展监控和诊断数据库 285
10.2.1 使用pg_top扩展监控数据库 285
10.2.1.1 pg_top扩展的安装与配置 285
10.2.1.2 【实战】使用pg_top扩展监控数据库 287
10.2.1.3 pg_top扩展的常用参数 289
10.2.2 使用pg_stat_statements扩展监控SQL运行 290
10.2.2.1 pg_stat_statements扩展的安装与配置 290
10.2.2.2 【实战】使用pg_stat_statements扩展监控SQL语句的执行 293
10.2.3 使用pg_stat_monitor扩展查询性能监控 296
10.2.3.1 pg_stat_monitor扩展的安装与配置 296
10.2.3.2 【实战】使用pg_stat_monitor扩展监控SQL语句的执行 298
10.2.3.3 pg_stat_monitor视图和pg_stat_statements视图的差异 301
10.2.4 使用auto_explain扩展监控慢查询 302
10.2.4.1 【实战】使用auto_explain扩展记录慢查询 302
10.2.4.2 auto_explain扩展的配置参数 304
10.2.5 使用pg_profile扩展生成数据库性能报告 306
10.2.5.1 pg_profile扩展的安装与配置 306
10.2.5.2 【实战】使用性能报告诊断数据库 308
10.2.5.3 分析数据库性能报告 310
10.3 【实战】使用PostgreSQL的分区 312
10.3.1 范围分区 313
10.3.2 列表分区 315
10.3.3 哈希分区 317
10.4 优化PostgreSQL服务器 319
10.4.1 数据库性能优化基础 320
10.4.1.1 数据库性能优化的三大问题 320
10.4.1.2 数据库的性能指标 320
10.4.1.3 影响数据库性能的外部因素 321
10.4.2 使用监控工具监控Linux操作系统的性能 321
10.4.2.1 磁盘监控工具 321
10.4.2.2 CPU监控工具 324
10.4.2.3 内存监控工具 325
10.4.2.4 网络监控工具 326
10.4.3 优化数据库存储性能 327
10.4.3.1 数据库的主从复制 327
10.4.3.2 数据库分片 328
10.4.4 优化PostgreSQL的配置参数 329
10.4.5 PostgreSQL的性能视图 333
第11章 PostgreSQL的高可用架构 335
11.1 基于Keepalived的高可用架构 335
11.1.1 基于Keepalived的PostgreSQL高可用架构 335
11.1.2 【实战】基于Keepalived部署PostgreSQL的高可用架构 336
11.1.2.1 部署基于流复制的主从复制集群 336
11.1.2.2 手动完成主从复制集群的主从切换 341
11.1.2.3 基于Keepalived自动完成主从复制集群的主从切换 343
11.2 基于pg_auto_failover扩展的高可用架构 349
11.2.1 pg_auto_failover扩展的体系架构 349
11.2.1.1 单备节点架构 350
11.2.1.2 双备节点架构 350
11.2.1.3 三备节点架构 350
11.2.1.4 异步节点多备架构 351
11.2.2 搭建基于pg_auto_failover扩展的高可用集群 352
11.2.2.1 安装与配置pg_auto_failover扩展 352
11.2.2.2 配置pg_auto_failover扩展的开机自启动 357
11.2.3 pg_auto_failover扩展的故障转移 359
11.2.3.1 集群的主从切换 359
11.2.3.2 客户端的故障转移 362
11.2.4 pg_auto_failover扩展故障转移的状态机 366
11.2.4.1 状态机中状态的转换 366
11.2.4.2 pg_auto_failover集群的调度过程 367
11.3 基于数据库中间件pgpool-II的高可用架构 368
11.3.1 pgpool-II简介 368
11.3.1.1 数据库中间件的定义 368
11.3.1.2 pgpool-II的功能特性 369
11.3.1.3 基于pgpool-II的PostgreSQL高可用集群 370
11.3.2 【实战】配置基于pgpool-II的PostgreSQL高可用集群 370
11.3.2.1 准备pgpool-II环境 371
11.3.2.2 配置基于pgpool-II的读/写分离 372
11.3.2.3 配置pgpool-II的高可用架构——看门狗 377
第12章 从Oracle迁移到PostgreSQL 381
12.1 从Oracle迁移到PostgreSQL基础 381
12.1.1 Oracle的体系架构 381
12.1.1.1 客户端组件和服务器端组件 381
12.1.1.2 Oracle的逻辑存储结构 382
12.1.1.3 Oracle的物理存储结构 382
12.1.1.4 Oracle的进程结构 383
12.1.1.5 Oracle的内存结构 385
12.1.2 对比Oracle和PostgreSQL的数据库对象的差异 385
12.1.2.1 数据库和数据库实例的差异 386
12.1.2.2 用户、方案与角色的差异 386
12.1.2.3 表空间的差异 387
12.1.2.4 表的差异 387
12.1.2.5 数据类型的差异 388
12.1.3 确定数据迁移方案 390
12.1.3.1 数据迁移前的准备 390
12.1.3.2 迁移数据库对象 390
12.1.3.3 改造系统代码 391
12.1.3.4 迁移工具的选择 391
12.1.3.5 功能测试和性能测试 392
12.1.3.6 生产割接 392
12.2 【实战】使用Ora2Pg完成数据迁移 392
12.2.1 安装Ora2Pg 393
12.2.2 数据迁移过程 395
12.2.2.1 Oracle表结构的迁移 395
12.2.2.2 Oracle表中数据的迁移 397
12.2.2.3 Oracle中视图的迁移 399
12.2.2.4 Oracle中存储过程的迁移 401

读者评论