Hacker News 中文摘要

RSS订阅

展望Postgres 19 -- Looking Ahead to Postgres 19

文章摘要

Postgres 19 测试版发布,包含多项重要更新:内置 REPACK CONCURRENTLY 提升大型数据库运维体验,新增 SQL 属性图查询,逻辑复制功能更完善,并在 VACUUM、EXPLAIN、分区、监控和性能优化等方面持续改进。

文章总结

好的,这是根据您的要求,对原文进行中文重述和精简后的版本:

展望 PostgreSQL 19:一个全面进化的版本

每个PostgreSQL版本都有其独特的个性。PG 19给人的感觉是“面面俱到”:既有内置的REPACK CONCURRENTLY命令(可在线整理表空间,解决生产环境中的锁问题),也有SQL属性图查询这样的重磅新功能。同时,逻辑复制、VACUUM、EXPLAIN、COPY、分区、监控和查询优化器等方面也持续改进,让数据库在日常运维中更加顺手。

以下是PG 19的主要亮点:

1. 内置在线表重组(REPACK CONCURRENTLY) 过去,要回收表膨胀或重组数据,通常需要借助pg_repack等第三方扩展。PG 19将REPACK命令引入核心,并支持REPACK CONCURRENTLY,允许在不阻塞读写的情况下完成操作。这对大型生产数据库的用户来说是一个巨大的生活质量提升。

2. 分区管理更实用 PG 19支持合并和拆分分区。这意味着你可以根据数据量和业务需求的变化,灵活调整分区策略,而无需重建整个表。例如,可以将两个季度分区合并为一个半年分区,或将一个季度分区拆分为三个月份分区。

3. 逻辑复制持续成熟 - 序列同步:订阅者现在可以同步发布者的序列值,解决了数据迁移后ID生成错位的问题。 - 发布排除:发布可以使用EXCEPT子句,方便地排除某些表,更符合实际运维场景。 - 自动启用:当需要时,wal_level = replica可以自动启用逻辑复制,并新增effective_wal_level报告实际生效的级别,减少了配置陷阱。

4. 自动清理(Autovacuum)更智能、更透明 - 并行清理:自动清理现在可以使用并行工作进程,加速大表和索引的维护。 - 优先级评分:引入新的评分系统,根据表的紧迫程度(如插入、更新/删除频率)决定清理顺序,并可针对特定表调整权重。 - 可视化:新增pg_stat_autovacuum_scores视图,让你能清晰看到自动清理的决策过程,使后台维护工作更可观测。

5. SQL属性图查询(SQL/PGQ) PG 19支持使用SQL进行属性图查询。这并非要求你放弃关系模型,而是在现有数据之上提供一种新的查询方式,适用于欺诈检测、推荐系统、网络分析等场景。它让你无需引入额外的图数据库,就能在同一个数据库中完成图状查询。

6. COPY命令更强大 - 跳过多行表头COPY FROM可以跳过多个表头行,方便处理来自外部工具的“脏”CSV文件。 - 错误处理:新增ON_ERROR SET_NULL选项,允许将无效输入值设为NULL,而不是让整个导入失败。 - JSON输出COPY TO可以直接输出JSON格式,包括完整的JSON数组。 - 直接导出分区表COPY TO现在可以直接导出分区表,无需使用子查询。

7. SQL语法生活质量提升 - GROUP BY ALL:自动按所有非聚合、非窗口表达式进行分组,简化查询。 - 窗口函数leadlag等函数支持IGNORE NULLSRESPECT NULLS,方便处理序列中的空值。 - Upsert增强INSERT ... ON CONFLICT DO SELECT ... RETURNING让你能更直接地返回冲突行。 - 时间范围操作UPDATEDELETE FOR PORTION OF支持,增强了时间维度数据处理能力。

8. 全面的性能提升 查询优化器和执行器持续改进,包括:反连接和半连接优化、常量折叠、增量排序、聚合前置到连接之前、更快的排序(基数排序)和外键约束检查、以及COPY FROM的SIMD指令加速。这些改进通常无需修改应用代码,升级后即可受益。

总结:PG 19为何重要? PG 19的亮点不在于单一功能,而在于其广度。它为应用开发者(图查询、SQL语法)、运维人员(REPACK、自动清理、监控)、性能优化者(优化器、SIMD)以及平台构建者(新钩子、扩展)都带来了实实在在的改进。这体现了PostgreSQL作为应用数据库、运维数据库、分析数据库和可扩展平台的全面进化。

目前PG 19仍处于测试阶段,建议尽快进行测试,包括运行应用、迁移测试、检查扩展、分析关键查询计划、测试逻辑复制和运维工作流,以确保正式版发布时一切顺利。

评论总结

根据评论内容,总结如下:

主要观点与论据:

  1. 对PostgreSQL 19新功能的期待与肯定(评分:无)

    • 多位用户对PG 19的新特性表示兴奋,如原生时间数据支持、COPY和逻辑复制改进、GROUP BY ALL等。
    • 关键引用:
      • "No word that PostgreSQL 19 introduces native application-time temporal data support based on the SQL:2011 standard?" (mkurz)
      • "It's great to see GROUP BY ALL introduced which, AFAIK, was a concept introduced by DuckDB." (ethagnawl)
      • "i like the COPY and logical replication improvements." (magnio)
  2. 对文章写作风格的质疑(评分:无)

    • 有用户认为文章风格类似AI生成,缺乏自然感。
    • 关键引用:
      • "I can't decide whether this person writes in the type of style that was apparently overrepresented in LLM training, or whether they heavily used AI to spruce up their writing." (breakingcups)
      • "If Orwell were alive today, he might declare himself illiterate in English and learn Klingon just to avoid having to read these." (magnio)
  3. 对PostgreSQL现有局限的批评(评分:无)

    • 用户指出PG在轻量级连接、同步物化视图、列式存储、块压缩、多存储引擎等方面的不足。
    • 关键引用:
      • "Postgres is amazing, and the two big things I wished it had: 1. lightweight connection... 2. Synchronously updated materialized views." (aljgz)
      • "I am getting worried about the lack of columnar type of storage in Postgresql." (sega_sai)
      • "I'm dreaming of block compression in Postgresql, instead of only row compression." (Jysix)
  4. 对特定新功能的疑虑(评分:无)

    • 有用户对图数据库功能的语法和性能表示担忧。
    • 关键引用:
      • "That is awful syntax; it is reminiscent of neo4j, which is surely not a tool anyone serious should copy from outright in 2026." (mickeyp)
      • "Row-level security is such a useful feature and yet only a fool would contemplate building anything serious with Postgres', as the planner goes haywire and does per-row-matching, nuking performance." (mickeyp)

平衡性总结: - 正面观点:PG 19新功能令人期待,尤其是GROUP BY ALL、COPY和逻辑复制改进,以及原生时间数据支持。 - 负面观点:文章风格疑似AI生成;PG在连接管理、物化视图、存储引擎等方面仍有不足;图数据库语法和性能存疑。 - 中立观点:用户对PG整体评价积极,但希望其能借鉴其他数据库(如DuckDB、SQL Server、MariaDB)的优点,并解决长期存在的痛点。