我来获取 PostgreSQL 18 的官方发布公告,以便为您详细分析其新特性与变化。根据官方发布的公告,PostgreSQL 18 是一个重大版本更新,带来了许多性能和功能上的改进。
以下是 PostgreSQL 18 的主要改变:
1. 性能提升
- 异步 I/O (AIO):引入了新的异步 I/O 子系统,支持顺序扫描、位图堆扫描和 VACUUM 操作,在某些场景下性能提升高达 3 倍。
- 跳过扫描(Skip Scan):在多列 B 树索引上引入跳过扫描,提高查询执行时间。
- 并行 GIN 索引构建:支持并行构建 GIN 索引,提升索引创建效率。
- 硬件加速:支持 ARM NEON 和 SVE CPU 指令集,优化
popcount函数性能。
2. 升级和维护
- 保留统计信息:在主要版本升级时保留规划器统计信息,减少升级后的性能下降。
- pg_upgrade 改进:支持并行处理和新的
--swap标志,加快升级速度。 - 默认启用页面校验和:新初始化的数据库默认启用页面校验和,提高数据完整性。
3. 开发者体验
- 虚拟生成列:引入虚拟生成列,查询时计算值,不存储数据。
- UUIDv7 支持:新增
uuidv7()函数,生成时间戳有序的 UUID,优化索引和读取性能。 - 时间约束:支持使用
WITHOUT OVERLAPS子句对主键和唯一约束进行时间范围约束。 - 外键表创建:支持使用
CREATE FOREIGN TABLE ... LIKE命令,基于本地表定义创建外键表。
4. 文本处理
- Unicode 支持:新增
PG_UNICODE_FAST排序规则,提供完整的 Unicode 语义,优化大小写转换和比较。 - LIKE 比较:支持在非确定性排序规则上进行
LIKE比较。 - 全文搜索:默认使用集群的默认排序规则提供者,而不是始终使用 libc。
5. 认证和安全
- OAuth 2.0 认证:支持 OAuth 2.0 认证机制。
- FIPS 模式验证:支持 FIPS 模式验证。
- TLS 1.3 密码套件:新增
ssl_tls13_ciphers参数,配置服务器端 TLS v1.3 密码套件。 - 弃用 MD5 认证:弃用 MD5 密码认证,推荐使用 SCRAM 认证。
6. 复制和高可用性
- 逻辑复制冲突报告:支持在日志和
pg_stat_subscription_stats视图中报告逻辑复制写入冲突。 - 并行流式处理:
CREATE SUBSCRIPTION默认使用并行流式处理事务。 - pg_createsubscriber 改进:新增
--all标志,可以一次性为实例中的所有数据库创建逻辑副本。
7. 维护和可观测性
- VACUUM 策略改进:在常规 VACUUM 期间主动冻结更多页面,减少开销。
- EXPLAIN 增强:
EXPLAIN和EXPLAIN ANALYZE提供更多详细信息,如缓冲区访问次数、索引查找次数等。 - 统计信息增强:
pg_stat_all_tables提供更多关于 VACUUM 操作花费的时间等信息。
8. 其他变化
- 新的 Wire 协议版本:引入 PostgreSQL Wire 协议的新版本(3.2),这是自 PostgreSQL 7.4(2003 年)以来的首个新版本。
- libpq 默认使用 3.0 协议:虽然引入了新的协议版本,但 libpq 默认仍使用 3.0 协议。
这些更新使得 PostgreSQL 18 在性能、可维护性、开发者体验、安全性和高可用性等方面都有显著提升,进一步巩固了其作为世界上最先进的开源数据库的地位。