Skip to content

Files

Latest commit

Dec 15, 2023
f400df2 · Dec 15, 2023

History

History
104 lines (76 loc) · 8.85 KB

20200926_01.md

File metadata and controls

104 lines (76 loc) · 8.85 KB

PostgreSQL 13 正式发布, 大颗粒特性(feature)解读 (2020-09-24)

作者

digoal

日期

2020-09-26

标签

PostgreSQL , 13


背景

每一行都值得仔细品读.

持续的性能提升

  • 在先前PostgreSQL版本的基础上,PostgreSQL 13可以有效地处理标准数据库索引B-tree中的重复数据。 这降低了B-tree索引所需的总体使用空间,同时提高了整体查询性能。
  • PostgreSQL 13引入了增量排序,其中查询中来自较早步骤的已排序数据可以加快后续步骤的排序。
    • If a result is already sorted by several leading keys, this allows for batch sorting of additional trailing keys because the previous keys are already equal. This is controlled by enable_incrementalsort.
  • PostgreSQL现在可以使用扩展的统计信息(通过CREATE STATISTICS访问)来创建增强带有OR子句和列表中的IN/ANY查找的查询计划。
  • 在PostgreSQL 13中,更多类型的聚合和分组可以利用PostgreSQL的高效哈希聚合功能,因为具有大聚合的查询不必完全放在内存中。
    • Allow hash aggregation to use disk storage for large aggregation result sets (Jeff Davis)
    • Allow grouping sets to use hash aggregation with disk storage for large grouping set results (Jeff Davis)
    • This is controlled by enable_hashagg_disk.
  • 带有分区表的查询性能得到了提高,因为现在有更多情况可以修剪分区并且可以直接连接分区。
    • For example, partitionwise joins can now happen between partitioned tables even when their partition bounds do not match exactly.

管理优化

  • PostgreSQL 13通过引入索引的并行清理来继续改进清理系统。除了它提供的清理性能优势外,由于管理员可以选择要运行的并行Worker进程的数量,因此可以针对特定工作负载调整此新功能的使用。
  • 数据插入现在还可以触发自动清理过程。
    • a vacuum scan has other useful side-effects such as setting page-all-visible bits, which improves the efficiency of index-only scans.
    • Also, allowing an insert-only table to receive periodic vacuuming helps to spread out the work of “freezing” old tuples,
  • 复制槽(Replication slots)用于防止预写日志(WAL)在备库收到之前被删除,可以在PostgreSQL 13中进行调整以指定要保留的WAL文件的最大数量,并有助于避免磁盘空间不足的错误。
  • PostgreSQL 13还增加了更多管理员可以监视数据库活动的方式,包括从EXPLAIN查看WAL使用情况的统计信息(explain命令增强),
  • 基于流的备份进度(流复制协议支持, pg_basebackup增强),
  • 以及ANALYZE命令的进度。
  • 另外,还可以使用新的pg_verifybackup命令来检查pg_basebackup命令输出的完整性。

便利的应用程序开发

  • PostgreSQL 13让使用来自不同数据源的PostgreSQL数据类型更加容易。此版本在SQL/JSON路径支持中添加了datetime()函数,该函数将有效的时间格式(例如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等。
    • 普通用户也能执行create extension xx; -- 只要这些插件被标记为“可信扩展", 在插件的control文件中定义.
  • 对于需要安全身份验证方法的应用程序,PostgreSQL 13允许客户端在使用SCRAM身份验证时要求通道绑定,并且PostgreSQL外部数据包装器(postgres_fdw)现在可以使用基于证书的身份验证。

其他功能

参考

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

digoal's wechat