PolarDB PostgreSQL版兼容PostgreSQL 18的版本正式发布上线。PostgreSQL 18版本通过性能提升、运维简化和功能扩展,进一步提升数据库使用的体验。
版本介绍
在社区PostgreSQL 18基础上,PolarDB还支持一些独有的功能,例如时空引擎GanosBase,全局计划缓存,GBK/GB18030 字符集等。在PolarDB PostgreSQL版 18的第一个发布版本中,即支持以下插件:hypopg,ip4r,mysql_fdw,pase,pgaudit,pg_bigm,pg_cron,pg_filedump,pg_hint_plan,pgjwt,pg_net,pg_similarity,pgsodium,pg_stat_kcache,pgtap,pgvector,pldebugger,postgres-decoderbufs,prefix,roaringbitmap,sequential_uuids,ganos,varbitx,vault,wal2json,zhparser。
同时,PolarDB进行了深入的性能优化:通过PGO、BOLT、LTO等系统级优化手段,结合批量文件读写与扩展、批量刷脏等I/O优化,并进行了深度的参数调优。
相关文档:PostgreSQL 18社区发布公告。
发布时间
新加坡时间2026年01月10日
费用说明
支持包年包月和按量计费两种计费模式,提供灵活的计费选择。计费详情请参见产品计费。
关键提升
系统级性能提升
异步I/O:引入异步I/O子系统,允许后端并行发送多个读请求,显著提高了顺序扫描、位图堆扫描及清理(VACUUM)等操作的效率。
查询优化:改进了查询优化器,能自动移除不必要的表自连接,并将部分
IN (VALUES ...)转换为ANY数组以利用更优的统计信息。索引性能:B-tree索引现已支持跳跃扫描(Skip Scan),GIN 索引支持并行创建,进一步提升了查询和索引维护效率。
VACUUM优化:允许
VACUUM冻结部分全可见页面,减少了后续全表冻结的开销。新增ONLY选项,可让VACUUM和ANALYZE仅处理分区父表。
开发者体验提升
虚拟生成列:生成列(Generated Columns)默认为虚拟列,在读取时动态计算其值,而非写入时存储,节省了存储空间。
DML功能增强:
RETURNING子句现支持OLD和NEW关键字,允许INSERT/UPDATE/DELETE/MERGE操作返回变更前后的数据。
高可用与逻辑复制增强
功能扩展:逻辑复制现已支持生成列。
CREATE SUBSCRIPTION的streaming选项默认值修改为parallel。运维简化:新增逻辑复制冲突日志,帮助您快速识别和解决数据同步中的问题。
安全性与管理增强
认证方式:弃用MD5密码认证,并引入对OAuth认证方法的支持,提供更现代、更安全的身份验证选项。
权限管理:新增
pg_get_acl()和has_largeobject_privilege()等函数,并允许为大对象(Large Objects)定义默认权限,使权限管理更加精细化。
升级指导
建议您升级到PolarDB PostgreSQL版 18版本。升级到PostgreSQL 18版本意味着您可以与PostgreSQL社区保持同步,获得更多的资源和支持,帮助您解决问题并学习数据库的最佳实践。
在PolarDB PostgreSQL版 17版本升级到PolarDB PostgreSQL版 18版本的过程中,大部分的数据类型、内置函数、表列和对象无明显变化,大多数为细节改进。通过逻辑复制等方式(推荐使用DTS工具进行PolarDB PostgreSQL版间的迁移)可以实现接近100%的兼容性,具体的变化细节如下所示。
此处仅为PolarDB PostgreSQL版 18版本与PolarDB PostgreSQL版 17版本区别。其他PolarDB PostgreSQL版版本升级到PolarDB PostgreSQL版 17中的区别,请参见PostgreSQL 17与PostgreSQL 16区别、PostgreSQL 16与PostgreSQL 15区别和PostgreSQL 15与PostgreSQL 14区别。
类型与行为
initdb现默认启用数据校验和。时区缩写处理将优先使用当前会话的设置。
设置MD5密码时,
CREATE ROLE和ALTER ROLE会发出弃用警告。全文本搜索的配置文件和字典读取将使用集群的默认排序规则提供程序。
系统视图
移除了
pg_backend_memory_contexts.parent列。pg_backend_memory_contexts.level和pg_log_backend_memory_contexts()的索引基准从0修改为1。pg_stat_all_tables及其相关视图新增了报告VACUUM和ANALYZE操作耗时的统计信息。移除了
pg_stat_wal视图中的wal_write、wal_sync、wal_write_time和wal_sync_time列。
函数与表达式
新增
casefold()函数,用于不区分大小写的匹配。MIN()/MAX()聚合函数现支持数组和复合类型。EXTRACT()函数新增WEEK选项。新增UUID v7生成函数
uuidv7()。新增
crc32()和crc32c()CRC校验函数。新增
array_sort()和array_reverse()数组处理函数。
权限
新增
pg_get_acl()函数,用于检索访问控制详情。新增
has_largeobject_privilege()函数,用于检查大对象权限。ALTER DEFAULT PRIVILEGES现支持为大对象定义默认权限。新增预定义角色
pg_signal_autovacuum_worker。
其他
VACUUM和ANALYZE默认会处理父表的继承子表。COPY FROM在读取CSV文件时,不再将.视作文件结束标记。禁止创建未记录日志(Unlogged)的分区表。
AFTER触发器将以触发器事件排队时活动的角色身份执行。移除了
GRANT/REVOKE中已失效的规则(Rule)权限支持。CREATE SUBSCRIPTION的streaming选项默认值已更改为parallel。