PG 16的新特性是不是在挤牙膏呢?

PG 16的第一个预览版发布了,也就是说PG社区已经锁定了PG 16的基本功能,到正式版发布虽然还有一段时间,不过在正式版里,剪掉某些功能是有可能的,增加某些功能基本上是无望了。很多PGer对于PG 16的功能更新有些失望,这次的失望恐怕要高于PG15。PGer最大的失望莫过于XID 64、内置连接池等重要功能的缺席。我也看到了网上一些朋友对PG16挤牙膏似的功能更新感到无力吐槽。事实是否如此呢?今天老白以自己的观点来给大家解析一下PG16更新的Highlight。

16个“亮眼”的新功能Highlight的第一个就是性能方面的,首先是并行查询方面的性能提升。实际上如果仔细研究一下这些文字,里面包含的信息还是挺丰富的。在并行执行方面,PG这些年还是下了很大功夫的,在近期的每个版本中都会出现一些和并行执行相关的新特性。这说明PG核心研发团队对于硬件技术的提升还是跟随得很紧的,希望利用现代硬件的新特性来为PG的性能做加持。

PostgreSQL 16增加了更多的并行查询能力,比如允许FULL和RIGHT JION在并行模式下执行,这两类都是SQL中常有的操作,可以对十分广泛的SQL执行加速。允许parallel group和parallel aggregate则会对统计类的SQL加速,从而更快的执行一些大数据量分析的SQL。

另外一个性能方面的提升中的“增量排序”是指在排序时,可以先对一部分数据进行排序,然后逐步加入更多的数据,而不是一次性对所有数据进行排序,从而节省内存和时间。PostgreSQL 16可以在SELECT DISTINCT 查询中使用增量排序,从而提高查询的性能。

“窗口查询”是指在执行一个select查询时,可以对结果集中的每一行或每一组行应用一些聚合函数或分析函数,比如求和、平均、排名等。PostgreSQL 16对窗口查询进行了一些优化,比如支持使用frame clause来指定窗口范围,支持在此类SQL中,对RANGE和LIST分区使用push down predicate来过滤不需要的数据,支持使用partition pruning来跳过不相关的分区等,并且支持在右外连接条件中使用“anti join”。

PG 16的并行执行并不仅仅限于SELECT,对于BULK LOADING操作也支持并发模式,这个改进可以将COPY命令的性能提升3倍。大数据量装载在数据库迁移和ETL等操作中都十分常见,3倍的性能提升还是挺令人满意的。

This release also introduces support for CPU acceleration using SIMD for both x86 and ARM architectures, including optimizations for processing ASCII and JSON strings, and array and subtransaction searches. Additionally, PostgreSQL 16 introduces load balancing to libpq, the client lib。

上面这句话包含了两方面的内容,一方面是PG16对SIMD的支持,一方面是libpq支持LOAD BALANCE了。不知道为什么要把这两件事放在一段里,目前还没有测试过,所以也不清楚二者是否有关。不过这意味着libpq可以自动选择最佳的服务器来处理客户端的请求,从而提高性能和可靠性。另外这个功能也意味着今后PG数据库的高可用与读写分离将会有更加简单的实现,这也为某些以读为主的应用提供了一种更加简单的实现方式。

上面那句话的另外一面是关于SIMD的,PG 16支持SIMD了。这是一件大事吗?对PG来说也许是的,不过SIMD已经不是啥新鲜玩意了,如果早上几年,这也许算是一个创新。Oracle 12c的IMDB就已经开始使用SIMD来做行列转换了,Clickhouse等数据库也早就用上了,国产数据库也大量使用SIMD,比如openGauss前些年就在宣传对SIMD的支持了。SIMD 是一种 CPU 的加速技术,可以充分利用CPU指令集的特性,比如INTEL的AVX-512指令集的能力实现超宽向量操作,让 CPU 一次处理多个数据,从而提高运算速度。PostgreSQL 16针对X86和ARM CPU 支持使用 SIMD 技术来加速一些常见的操作,比如处理 ASCII 和 JSON 字符串。

针对这个特性,放在2023年的今天还放在HIGHLIGHT里作为一个亮点来介绍,似乎有点大惊小怪了,好像当年Oracle 12c的新特性里压根就放不下这一条。倒是一些国产数据库只要用上一点SIMD就号称在数据库中支持矢量计算了。

 在逻辑复制上,PG16也发布了一些新特性,其中最重要的是可以将逻辑复制的解码工作从主库下载到从库,这可以大大减轻主库的工作压力,在高负载情况下提高主库的性能。另外在对大事务的复制优化上,PG16支持对大事务进行并行APPLY,从而解决大事务导致逻辑复制延时过大的问题。另外一个性能优化是,在逻辑复制UPDATE/DELETE操作时,不仅仅可以使用主键,也可以使用其他索引。上述关于逻辑复制的性能优化,算是中规中矩,从库解码和大事务并行APPLY都是十分有价值的更新。

今天时间有限,关于开发体验和安全的新特性我们先跳过,我们直接来看下一条:监控与管理。这是DBA最为关心的内容。其中最令DBA兴奋的是pg_stat_io。DBA苦无法获知PG的IO性能指标久矣。在D-SMART里,PG数据库的健康模型中冠以PGIO的指标十分稀缺。

可以看到,在D-SMART的健康模型中,关于PG IO方面的指标只有区区数个,而且还都是参考性不够强的指标。

在同门兄弟openGauss中,指标的数量与质量都有了明显的提高,我们的健康模型也更能够反映出数据库的IO负载与性能状态。在PG16中,这些问题得到了改善,pg_stat_io可以按照backend类型对IO进行统计,包括读写次数,读写时间,回写次数等信息。

对于失望于没有看到XID64的朋友,PG16给了大家一个安慰奖:“This release includes improvements to the page freezing strategy, which helps the performance of vacuuming and other maintenance operations.”。可能是有点不好意思吧,在新特性中仅仅提了上面一句话。PostgreSQL 16通过使用主动的时间线来驱动 VACUUM 冻结,从而避免不必要的冻结元组。这样可以减少自动清理的频率,并提高清理效率。

关于这个问题,大家意见比较大是可以理解的,不过我们也要理解修改XID的难处。以Oracle为例,在2002年左右爆发的SCN HEADROOM问题一些老DBA可能还记得,这是因为48位的SCN以及40年前的设计者为了让Oracle数据库能保用500年而设计的每秒SCN增长16K的天花板。哪怕是刚刚出现问题的2002年,每秒新增1.6万事务的估计显得有点科幻,不过随着硬件能力的提升,现在一秒钟干20万笔事务的数据库系统已经很常见了。二十年前问题刚刚爆发时,Oracle官方就认为彻底解决该问题的方法是将48位的SCN升级为64位。不过20年过去了,Oracle还没有实现这个升级,而是把数据库SCN必须你能够保用500年这一条改掉了,谁家的数据库能一库到底500年?让SCN HEADROOM突破16K的限制比把SCN改成64位简单多了。我想目前PG社区的老大们目前也在往这方面想吧。

今天因为时间问题,我就写这么多吧,一些其他的特性就不做详细的解读了。目前我也仅仅是解读了文档,并没有真正的去使用PG16,有些东西是不是我想象的这样,这就需要今后实践中去体验了。从对PG16新特性的解析上看,虽然说对于一个年度更新大版本的数据库产品来说,这些提升还是说得过去的,不过也看出了PG社区的大佬们还是偏于保守,不过对于数据库产品来说,稳定是第一位的,确保数据安全的优先级是远高于创新的,所以大家也不要太失望。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/263743.html<

(0)
管理的头像管理
上一篇2025-05-04 17:14
下一篇 2025-05-04 17:16

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注