【作者】
彭冲,中国PostgreSQL分会PostgreSQL ACE,多年从事基于PostgreSQL数据库的软件研发,擅长于PL/PGSQL业务迁移及优化,曾在天津通卡作为核心开发人员将项目成功实施于委内瑞拉交通部现场,并成功完成全国公交系统整体迁移升级。后在银联体系从事商户交易数据异构处理工作。2019年加入云和恩墨,在数据库生态产品群从事开源数据库及国产数据库的建设,热衷于PostgreSQL及openGauss/MogDB数据库实践技术分享。
【内容】
自2019年底加入墨天轮数据社区以来,笔者在PG乐知乐享专栏持续撰写了与PostgreSQL相关的文章,近几年陆续撰写了一些有关各版本新特性方面的文章。由于PostgreSQL每个版本发布的新特性较多,因此要想全面、完整地掌握PostgreSQL新特性十分困难。本书对PostgreSQL的7个大版本:从PostgreSQL 10到PostgreSQL 16,根据公开的新特性实验手册、新特性相关的文章、邮件列表、社区核心提交者相关的博客,以及官方Release Notes等素材进行精加工,并从主要性能、可靠性、运维管理、开发易用性、系统层5个方面进行介绍。在当前国内外环境下,PostgreSQL正在不断崛起,本书从新特性的视角帮助读者掌握数据库的正确使用方式。
【目录】
第1章 PostgreSQL 10新特性1
1.1 PostgreSQL 10的主要性能提升1
1.1.1 数据分区1
1.1.2 并行特性增强1
1.1.3 统计信息扩展2
1.1.4 AFTER触发器性能增强4
1.1.5 Aggregate操作支持下推5
1.2 PostgreSQL 10的可靠性提高7
1.2.1 仲裁提交引入7
1.2.2 HASH索引支持记录WAL8
1.2.3 事务提交状态检测8
1.3 PostgreSQL 10的运维管理优化9
1.3.1 WAL文件大小扩容9
1.3.2 WAL支持在线压缩10
1.3.3 ICU标准库引入10
1.3.4 活动会话视图增强10
1.3.5 HBA文件新增系统视图11
1.3.6 promote子命令增加等待模式12
1.3.7 基础备份增强12
1.3.8 临时复制槽引入13
1.3.9 行级安全策略优化13
1.3.10 PSQL工具允许条件式交互15
1.4 PostgreSQL 10的开发易用性提升15
1.4.1 声明式分区引入15
1.4.2 表级数据发布与订阅17
1.4.3 标识列引入18
1.4.4 全文检索支持JSON与JSONB数据类型21
1.4.5 xmltable函数引入22
1.5 PostgreSQL 10的系统层变化24
1.5.1 XLOG重命名24
1.5.2 系统元数据引入25
1.5.3 配置参数引入26
1.5.4 口令加密安全性提高26
1.5.5 预置角色变化26
1.5.6 附加模块变化27
1.6 本章小结27
第2章 PostgreSQL 11新特性28
2.1 PostgreSQL 11的主要性能提升28
2.1.1 WAL可配置28
2.1.2 B-Tree索引并行创建29
2.1.3 HASH操作及HASH JOIN操作支持并行30
2.1.4 其他并行特性支持31
2.1.5 表达式索引引入32
2.1.6 覆盖索引引入33
2.1.7 实时编译引入34
2.1.8 缓存管理改进35
2.1.9 UPDATE操作和DELETE操作支持下推35
2.2 PostgreSQL 11的可靠性提高36
2.2.1 数据块校验和检测36
2.2.2 B-Tree索引坏块检测37
2.2.3 查询ID由32位扩充为64位37
2.3 PostgreSQL 11的运维管理优化38
2.3.1 快速添加列38
2.3.2 维护操作支持多个表40
2.3.3 分区数据支持通过父表加载40
2.3.4 新增KILL信号40
2.3.5 WAL支持离线重构40
2.3.6 PSQL工具支持记录语句执行情况41
2.4 PostgreSQL 11的开发易用性提升42
2.4.1 声明式分区增强42
2.4.2 支持事务控制的存储过程43
2.4.3 逻辑复制支持TRUNCATE操作44
2.4.4 窗口函数增强44
2.5 PostgreSQL 11的系统层变化45
2.5.1 配置参数引入45
2.5.2 预置角色变化46
2.5.3 超级用户权限下放46
2.5.4 附加模块变化47
2.6 本章小结47
第3章 PostgreSQL 12新特性48
3.1 PostgreSQL 12的主要性能提升48
3.1.1 CTE优化48
3.1.2 索引效率提升50
3.1.3 系统函数优化51
3.2 PostgreSQL 12的运维管理优化51
3.2.1 校验和开关控制51
3.2.2 COPY FROM命令数据过滤52
3.2.3 用户级流复制超时控制52
3.2.4 VACUUM操作及ANALYZE操作锁跳过53
3.2.5 表及索引清理解耦54
3.2.6 索引在线重建54
3.2.7 执行计划显示非默认参数55
3.2.8 后台操作进度报告引入56
3.2.9 备库升主库开放SQL接口57
3.2.10 PSQL工具帮助链接添加57
3.3 PostgreSQL 12的开发易用性提升58
3.3.1 声明式分区增强58
3.3.2 运算存储列使用59
3.3.3 绑定变量窥探引入60
3.3.4 SQL/JSON path引入61
3.3.5 枚举数据类型增强63
3.4 PostgreSQL 12的系统层变化63
3.4.1 表存储引擎开放63
3.4.2 恢复相关配置优化64
3.4.3 系统元数据引入64
3.4.4 配置参数引入65
3.4.5 流复制连接数优化66
3.4.6 DOS攻击预防66
3.4.7 SSL协议可控67
3.4.8 附加模块变化67
3.5 本章小结67
第4章 PostgreSQL 13新特性68
4.1 PostgreSQL 13的主要性能提升68
4.1.1 索引去重68
4.1.2 增量排序70
4.1.3 库级索引并发重建71
4.1.4 HASH聚合可溢出到磁盘72
4.1.5 索引并行清理72
4.1.6 PL/pgSQL提速74
4.1.7 Windows连接优化75
4.2 PostgreSQL 13的可靠性提高75
4.2.1 备份可靠性提高75
4.2.2 流复制可动态配置77
4.3 PostgreSQL 13的运维管理优化77
4.3.1 数据库删除更便捷77
4.3.2 并行查询关联PID78
4.3.3 共享内存可观测79
4.3.4 基于磁盘的缓存可监控79
4.3.5 后台操作进度报告引入80
4.3.6 语句日志采样降噪80
4.3.7 PSQL工具跟踪事务运行状态80
4.3.8 pg_rewind工具优化82
4.4 PostgreSQL 13的开发易用性提升83
4.4.1 分区表及逻辑复制改进83
4.4.2 标识列可忽略用户输入84
4.4.3 存储列可转换为普通列85
4.4.4 分页排序可并列排名86
4.4.5 易用的内置函数引入87
4.4.6 FF1~FF6时间格式引入88
4.4.7 Row表达式使用88
4.4.8 视图列名纠正89
4.5 PostgreSQL 13的系统层变化89
4.5.1 系统元数据引入89
4.5.2 配置参数引入89
4.5.3 对象标识符类型引入90
4.5.4 内部术语引入91
4.5.5 备库升主库流程优化91
4.5.6 INSERT操作自动清理调优92
4.5.7 WAL用量跟踪93
4.5.8 坏块绕过继续恢复95
4.5.9 外部表安全性提高95
4.5.10 附加模块变化96
4.6 本章小结97
第5章 PostgreSQL 14新特性98
5.1 PostgreSQL 14的主要性能提升98
5.1.1 高并发连接优化98
5.1.2 紧急清理模式引入99
5.1.3 列级压缩可配置99
5.1.4 逻辑复制改进101
5.1.5 嵌套循环改进102
5.1.6 并行特性增强103
5.2 PostgreSQL 14的可靠性提高104
5.2.1 数据结构检测105
5.2.2 备节点可作为恢复源105
5.2.3 密码长度限制取消107
5.3 PostgreSQL 14的运维管理优化107
5.3.1 查询ID引入108
5.3.2 索引表空间在线移动111
5.3.3 触发器在线重建112
5.3.4 控制客户端连接113
5.3.5 后台操作进度报告引入114
5.3.6 可观测性增强115
5.4 PostgreSQL 14的开发易用性提升115
5.4.1 多范围类型引入115
5.4.2 存储过程支持OUT模式参数116
5.4.3 新形式的SQL函数引入116
5.4.4 JSON操作功能增强118
5.4.5 递归查询改进119
5.4.6 易用的内置函数引入122
5.5 PostgreSQL 14的系统层变化125
5.5.1 系统元数据引入125
5.5.2 系统函数变化126
5.5.3 预置角色变化126
5.5.4 配置参数变化128
5.5.5 客户端C驱动改进129
5.5.6 客户端认证安全性提高130
5.5.7 附加模块变化131
5.6 本章小结133
第6章 PostgreSQL 15新特性135
6.1 PostgreSQL 15的主要性能提升135
6.1.1 统计信息内存化135
6.1.2 增量排序算法改进136
6.1.3 WAL恢复预读取137
6.1.4 全块写新增压缩算法138
6.1.5 备份效率提高138
6.1.6 并行特性增强140
6.2 PostgreSQL 15的可靠性提高141
6.2.1 统计信息一致性读取141
6.2.2 统一非独占备份模式引入142
6.2.3 本地化Collation相关增强142
6.2.4 流复制支持UNLOGGED序列144
6.2.5 pg_rewind工具指定外部配置文件145
6.3 PostgreSQL 15的运维管理优化145
6.3.1 服务端本地备份引入145
6.3.2 JSON格式日志引入147
6.3.3 创建数据库功能增强150
6.3.4 COPY操作对文本格式增强150
6.3.5 执行计划显示信息改进151
6.3.6 pg_receivewal工具压缩功能增强153
6.3.7 PSQL工具优化153
6.4 PostgreSQL 15的开发易用性提升155
6.4.1 MERGE语句引入155
6.4.2 NULL值与UNIQUE约束更搭162
6.4.3 numeric数据类型改进163
6.4.4 正则表达式函数引入164
6.4.5 分区表改进165
6.4.6 逻辑复制改进166
6.5 PostgreSQL 15的系统层变化167
6.5.1 系统元数据引入167
6.5.2 系统函数变化168
6.5.3 预置角色变化169
6.5.4 配置参数变化170
6.5.5 GRANT命令授权变化173
6.5.6 递归查询优化173
6.5.7 公共模式安全性提高174
6.5.8 视图安全性提高176
6.5.9 附加模块变化177
6.6 本章小结177
第7章 PostgreSQL 16新特性179
7.1 PostgreSQL 16的主要性能提升179
7.1.1 并行特性增强179
7.1.2 预排序性能提升180
7.1.3 死元组清理性能提升180
7.1.4 其他性能提升180
7.2 PostgreSQL 16的运维管理优化181
7.2.1 I/O统计更详细181
7.2.2 pg_dump工具功能增强182
7.2.3 PSQL工具功能增强183
7.2.4 VACUUM命令及VACUUMDB工具功能增强183
7.2.5 pg_hba.conf文件配置更高效184
7.2.6 普通用户连接优化184
7.2.7 HOT更新监控增强185
7.2.8 不活跃索引监控185
7.2.9 便捷的参数化语句分析186
7.3 PostgreSQL 16的开发易用性提升187
7.3.1 逻辑复制功能完善187
7.3.2 SQL标准2023部分支持引入188
7.3.3 SQL/JSON 函数功能增强189
7.3.4 数据导入默认值重定义192
7.3.5 libpq协议负载均衡功能引入193
7.4 PostgreSQL 16的系统层变化193
7.4.1 版本兼容性变化193
7.4.2 系统函数变化195
7.4.3 预置角色变化196
7.4.4 配置参数变化196
7.4.5 初始用户权限优化197
7.4.6 成员角色权限7
返回顶部