PostgreSQL 18 有哪些改变

我来获取 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 增强EXPLAINEXPLAIN ANALYZE 提供更多详细信息,如缓冲区访问次数、索引查找次数等。
  • 统计信息增强pg_stat_all_tables 提供更多关于 VACUUM 操作花费的时间等信息。

8. 其他变化

  • 新的 Wire 协议版本:引入 PostgreSQL Wire 协议的新版本(3.2),这是自 PostgreSQL 7.4(2003 年)以来的首个新版本。
  • libpq 默认使用 3.0 协议:虽然引入了新的协议版本,但 libpq 默认仍使用 3.0 协议。

这些更新使得 PostgreSQL 18 在性能、可维护性、开发者体验、安全性和高可用性等方面都有显著提升,进一步巩固了其作为世界上最先进的开源数据库的地位。

评论栏