跳转至

POSTGRESQL 13 特性

持续性能提升

在前一个 PostgreSQL 版本的基础上,PostgreSQL 13 可以有效地处理 B 树索引中的重复数据,这是标准的数据库索引。这降低了 B 树索引所需的总空间使用,同时提高了整体查询性能。

PostgreSQL 13 引入增量排序,在查询的早期步骤中已排序的数据可以加速后续排序。此外,PostgreSQL 现在可以使用扩展统计系统(通过 CREATE STATISTICS 访问)为 OR 子句和 IN/ANY 查找列表的查询创建改进的计划。

在 PostgreSQL 13 中,更多类型的聚合和分组集查询可以利用 PostgreSQL 的高效哈希聚合功能,因为具有大型聚合的查询不必完全适合内存中。具有分区表的查询已获得性能提升,因为现在可以更多地剪枝分区,并且可以直接连接分区的情况更多。

管理优化

VACUUM 是 PostgreSQL 管理的关键部分,使数据库能够在更新和删除行后回收存储空间。虽然此过程也可能存在管理挑战,但是之前的 PostgreSQL 发布版已经努力减轻 VACUUM 的开销。

PostgreSQL 13 不断改进清理系统,引入并行索引清理。除了提供清理性能优势外,这个新特性的使用可以针对特定的工作负载进行调整,因为管理员可以选择运行的并行工作程序数。除了这些性能优势外,插入数据现在可以触发 autovacuum 进程。

复制槽用于防止副本接收 write-ahead 日志(WAL)之前被删除。在 PostgreSQL 13 中,可以调整复制槽以指定保留的 WAL 文件的最大数量,以避免磁盘空间不足错误。

PostgreSQL 13 还添加了更多管理员可以监视数据库活动的方式,包括从 EXPLAIN 引用 WAL 使用统计信息、流式基本备份的进度以及 ANALYZE 命令的进度。此外,可以使用新的 pg_verifybackup 命令检查 pg_basebackup 命令的输出的完整性。

应用程序开发便利性

PostgreSQL 13 使从不同数据源导入 PostgreSQL 数据类型变得更加容易。此版本将 datetime() 函数添加到其 SQL/JSON 路径支持中,该函数可以将有效的时间格式(例如 ISO 8601 字符串)转换为 PostgreSQL 本机类型。此外,UUID v4 生成函数 gen_random_uuid() 现在可用,无需安装任何扩展即可使用。

PostgreSQL 的分区系统更加灵活,因为分区表完全支持逻辑复制和 BEFORE 行级触发器。

在 PostgreSQL 13 中,FETCH FIRST 语法现在扩展为包括 WITH TIES 子句。当指定时,WITH TIES 包括根据 ORDER BY 子句与结果集中的最后一行“相等”的任何行。

安全增强

PostgreSQL 的扩展系统是其强大性的关键部分,因为它允许开发人员扩展其功能。在之前的发布版中,只有数据库超级用户才能安装新扩展。为了更方便地利用 PostgreSQL 的可扩展性,PostgreSQL 13 添加了“可信任扩展”的概念,允许数据库用户安装超级用户标记为“可信任”的扩展。某些内置扩展默认为可信任扩展,包括 pgcrypto、tablefunc、hstore 等。

对于需要安全验证方法的应用程序,PostgreSQL 13 允许客户端在使用 SCRAM 认证时要求通道绑定,并且 PostgreSQL 外部数据包装器 (postgres_fdw) 现在可以使用基于证书的认证。

原文:

https://www.postgresql.org/about/news/postgresql-13-released-2077/