暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 17来了!阿里云RDS PG版全面支持

618



PostgreSQL 被誉为最先进的开源数据库,具有强大的扩展性和灵活的架构。它的各种扩展、工具以及对高级数据类型的支持,使其成为了各类数据使用和应用开发中的热门选择。今年9月26日,社区官方正式发布PostgreSQL 17 版本(下文简称PG 17)[1],在性能、逻辑复制、开发者体验、监控、权限&安全等方面进行了改进和优化。阿里云瑶池数据库旗下的云数据库RDS PostgreSQL 版(下文简称RDS PG)已支持 PG 17。在社区版 PG 17 基础上,RDS PG进行了安全、成本、运维等多方面提升,并增加了多种内核和插件特性。

详情可点击文末「阅读原文」查阅阿里云 RDS PG 各大版本功能概览

[1] https://www.postgresql.org/about/news/postgresql-17-released-2936/



01

社区版 PG 17 有哪些亮点?

1. 性能

▶︎ VACUUM

  • 使用了新的数据结构 tid store (内部实现为 radix tree) 记录死元组,提升 VACUUM 效率,降低内存消耗。

  • 解除 vacuum 1G 内存使用上限:当清理包含索引的表时,VACUUM 会将死元组记录在内存中,当内存受限时,会触发对索引文件的扫描。所以,增加 VACUUM 的内存使用上限,可以减少对索引文件的扫描次数,以加快 VACUUM 的速度并节约 IO 资源。

▶︎ WAL

  • 优化了 WAL 锁的管理方式,提升高并发修改的性能。

▶︎ 优化器

  • 可同时使用统计信息和 WITH 查询进一步优化。
  • IN 从句中可使用 B 树索引,大幅度加速查询。
  • 对于含有 NOT NULL 约束的字段,可以自动剔除冗余的 IS NOT NULL 语句。

2. 逻辑复制
  • 支持逻辑复制槽的故障转移功能。
  • PG17 向上升级到更高大版本时,可保留逻辑复制槽。
  • 新增二进制工具 pg_createsubscriber, 可以将两个物理复制的实例转化为逻辑复制。
  • 提升在大量子事务场景下逻辑解码的性能。

▶︎ 监控
  • 新增视图 pg_stat_checkpointer,提供 checkpoint 的统计信息,可以更好地监控 checkpoint 的频率以及资源消耗。
  • 新增视图 pg_wait_events,提供了等待事件的原因。
  • EXPLAIN 可以打印优化器的内存消耗。

▶︎ 权限&安全

  • 新增表级权限 MAINTAIN,和保留用户 pg_maintain, 用于控制表的 VACUUM, REINDEX 等权限

  • 增加新的参数 sslnegotiation,可以直接执行 TLS 握手,消除了网络往返

▶︎ 开发者体验
  • 更完善的 JSON 支持

新增函数 JSON_TABLE(),可以在 SQL 语句中,将 JSON 数据转化成一个表

◆ 新增 JSON 构建函数 JSON(), JSON_SCALAR() 以及 JSON_SERIALIZE()

◆ 新增 JSON 查询函数 JSON_EXISTS(), JSON_QUERY(), and JSON_VALUE()

  • 提供函数 pg_column_toast_chunk_id() 获取 TOAST 的 chunk id

02

为什么选择使用阿里云 RDS PG 17

阿里云RDS PG完全兼容社区PostgreSQL,采用云原生架构,经过软硬件协同优化,为用户提供稳定可靠的高性价比数据库服务。同时,凭借丰富的插件扩展,RDS PG能支持各领域的场景化业务需求。
RDS PG全面支持社区版 PG 17,自研功能持续兼容 PG 17,同时还引入多项自研内核特性,用以补强社区版 PG 17,满足用户在特定业务场景中的需求。
1. 成本

▶︎ 通用云盘数据归档(新功能):RDS PG实例利用表空间和外部文件系统来实现对OSS的访问,允许用户通过DDL完成数据在ESSD和OSS之间的转换。开启用RDS PG数据归档功能后,利用OSS的海量、安全、低成本和高可靠特性,用户可在RDS PG上实现极低成本、无限容量的归档数据存储,并支持低频数据访问。相较于ESSD PL1云盘,数据存储成本下降了80%。通用云盘数据归档能力适用于实例中有大量不常访问数据的场景。详见通用云盘数据归档。

🔗 通用云盘数据归档:https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/data-archiving

▶︎ 表空间级别的透明页压缩(Transparent Page Compression,简称TPC):页压缩指对Buffer Pool中的页执行实时的I/O压缩和解压缩,透明是指使用过程中无感知,数据在写入磁盘时自动压缩,数据在从磁盘读取时自动解压缩。
通过透明页压缩,用户可减少存储空间的使用,降低磁盘I/O,以此提高数据库读性能,提高缓存效率,加快数据传输速度。在实例数据量大,业务场景以读为主的场景,透明页压缩功能的优势尤为明显。存储成本可平均可节约50%,IO使用平均可节约50%,读场景下的TPS最高可提升100%。
2. AP能力

▶︎ 高性能OLAP引擎 rds_duckdb(新功能):新增rds_duckdb插件,引入了DuckDB提升RDS PG的分析能力,允许用户将PostgreSQL本地表导出列存表副本,在开启AP加速开关后,对查询进行加速。启用插件后,您可以在RDS PG上实现高效的分析查询,性能提升可高达几十倍。详见AP加速引擎(rds_duckdb)。

🔗 rds_duckdb:https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/use-the-rds-duckdb-extension

3. 安全

▶︎ 表级别的透明数据加密(Transparent Data Encryption,简称TDE):所有加密解密操作均在内存中进行,内存中的数据是明文,磁盘中的数据是密文,避免因磁盘被盗而产生的数据泄露问题,同时数据库的使用方式保持不变,没有适配成本。
更细粒度的加密可以在保证安全的同时尽量降低因加密解密带来的性能损耗,同时也支持开启默认加密选项。在对数据进行加密,或有特殊安全合规要求的场景中,TDE能力尤为重要。
4. 运维

▶︎ 缓存淘汰功能:彻底解决多表场景下原生PostgreSQL长连接占用内存过多的问题。PostgreSQL中,后端进程每访问到一个表,会将该表的元信息缓存到本地,并且这些缓存不会被主动释放,以减少后续对磁盘的访问。这导致长连接可能会积累大量的缓存,并导致内存溢出(OOM)。该功能多用于具有大量长连接的SAAS场景。详见缓存淘汰。

🔗 缓存淘汰:https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/use-the-cache-eviction-feature

▶︎ SQL限流功能:通过限制并发SQL数,从而避免过高的数据库负载,保证数据库的稳定性和可靠性。多用于高并发访问,防止恶意攻击,控制资源使用等场景。详见SQL 限流功能。

🔗  SQL限流功能:https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/use-the-rds-ccl-extension-to-perform-sql-throttling-on-an-apsaradb-rds-for-postgresql-instance

5. 自研/三方插件

除此之外,RDS PG还支持多种自研、第三方插件,为用户提供丰富的扩展功能,详见支持插件列表。例如:
▶︎ pgvector向量插件(三方开源):pgvector插件,能够存储向量类型数据,并实现向量相似度匹配,为AI产品提供底层数据支持
▶︎ Ganos时空引擎(自研):PostgreSQL Ganos时空引擎提供一系列的数据类型、函数和存储过程,从而,用户可以在阿里云RDS PG中对空间/时空数据进行高效的存储、索引、查询和分析计算。
▶︎ 全密态数据库(自研):用户可以对数据库表中的敏感数据列进行加密,这些列中的敏感数据将以密文进行传输、计算和存储。全密态数据库可以解决用户不同应用场景下的数据安全问题,如平台安全运维、敏感数据合规、多源数据融合等场景。
▶︎ index_adviser索引推荐(自研):索引推荐(index_adviser)可以帮助用户确定应该对哪些列编制索引,以提高指定工作负载中的性能。
▶︎ oss_fdw读写外部数据文本文件(自研):支持将OSS中的数据加载到RDS PG数据库中,也支持将RDS PG数据库中的数据写入OSS中。
▶︎ pgbouncer 轻量级连接池(三方开源):用于优化数据库连接的性能和资源利用率。当应用程序需要与PostgreSQL数据库建立连接时,它可以通过连接池复用现有的数据库连接,避免了频繁地创建和销毁连接产生的性能开销。这种连接复用可以显著减少数据库服务器的负载,提高应用程序的响应速度和并发性能。适用于短连接较多,频繁创建和销毁连接的场景。
▶︎ pg_jieba中文分词插件(三方开源基础上加入自研功能):用于中文的全文搜索,支持自定义词库。
🔗 支持插件列表:https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/extensions-supported-by-apsaradb-rds-for-postgresql

03

如何升级到阿里云 RDS PG 17

RDS PG提供了完善的大版本升级功能(详见升级数据库大版本),包括蓝绿部署和本地升级两种模式。
蓝绿部署模式下,用户既可以使用不割接的方式,在不影响原实例的情况下,验证整个升级流程,又可以割接的方式,在大版本升级期间无需停机,并能在升级完成后,自动交换原实例与新实例的连接地址,做到业务侧无感。
本地升级方式下,用户可保证实例的参数配置和付费模式不变。
🔗 升级数据库大版本:https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/upgrade-the-major-engine-version-of-an-apsaradb-rds-for-postgresql-instance

/ END /

点击了解 阿里云 RDS PG 功能概览

喜欢就请 点赞/分享/在看 哦

文章转载自阿里云瑶池数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论