2021年

本文介绍PolarDB PostgreSQL版(兼容Oracle)的产品功能动态,分别为内核小版本、控制台、时空数据库和API的更新说明。

说明
  • 您可通过如下语句查看PolarDB PostgreSQL版(兼容Oracle)的内核小版本的版本号:

    SHOW polardb_version;
  • PolarDB PostgreSQL版(兼容Oracle)内核小版本号于北京时间2025226日更新为6位格式,您可查看PolarDB内核小版本号格式更新确认变更细节以及内核小版本号更新前后对应关系。

202112

内核小版本(V1.1.19)

类别

名称

描述

相关文档

新增

sql mapping

PolarDB PostgreSQL版(兼容Oracle)支持SQL映射功能,将错误的SQL映射为正确的SQL,从而避免由于错误SQL引起的问题。

polar_sql_mapping

PX支持并行Update

跨机并行查询支持并行update,包括带子查询的update。

通过设置polar_px_enable_update参数,开启或关闭该功能,默认值为false。

  • 设置为true时,表示开启并行update功能。

  • 设置为false时,表示关闭并行update功能。

通过设置polar_px_update_dop_num参数,控制并行update的并发数,默认为6,范围为1~128。

通过设置polar_px_enable_remove_update_redundant_motion参数,控制当读写worker数相同的情况时,是否移除多余的motion算子,默认为false。

  • 设置为true时,表示开启移除多余motion算子的功能。

  • 设置为false时,表示关闭移除多余motion算子的功能。

跨机并行查询

PX支持并行Delete

跨机并行查询支持并行delete,包括带子查询和不带子查询的并行delete。

通过设置polar_px_enable_delete参数,开启或关闭该功能,默认值为false。

  • 设置为true时,表示开启并行delete功能。

  • 设置为false时,表示关闭并行delete功能。

通过设置polar_px_delete_dop_num参数,控制并行delete的并发数,默认为6,范围为1~128。

通过设置polar_px_enable_remove_delete_redundant_motion参数,控制当读写worker数相同的情况时,是否移除多余的motion算子,默认为false。

  • 设置为true时,表示开启移除多余motion算子的功能。

  • 设置为false时,表示关闭移除多余motion算子的功能。

PX支持partition wise join

跨机并行查询支持分区表的partition wise join高级特性。

对分区表使用跨机并行查询

兼容Oracle视图

PolarDB PostgreSQL版(兼容Oracle)兼容Oracleall_tab_columns /all_tab_comments2个视图,以及all_objects视图的部分列。

ALL_TAB_COLUMNSALL_OBJECTS

优化

支持DBMS_SQL.TO_CURSOR_NUMBER/DBMS_SQL.TO_REFCURSOR

支持DBMS_SQL.TO_CURSOR存储过程。

例如,

   -- 从本地动态SQL转换为DBMS_SQL
  curid := dbms_sql.to_cursor_number(cursrc);

时空数据库(V4.3)

类别

名称

描述

相关文档

新增

ST_PixelAsPolygon函数

新增ST_PixelAsPolygon函数,将栅格像素转换为Polygon对象。

ST_PixelAsPolygon

ST_PixelAsPolygons函数

新增ST_PixelAsPolygons函数,将栅格像素转换为Polygon对象集合。

ST_PixelAsPolygons

ST_PixelAsPoint函数

新增ST_PixelAsPoint函数,将栅格像素转换为基于点方式表述的几何对象。

ST_PixelAsPoint

ST_PixelAsCentroid函数

新增ST_PixelAsCentroid函数,将栅格像素转换为基于中心点方式表述的几何对象,

ST_PixelAsCentroid

ST_PixelAsPoints函数

新增ST_PixelAsPoints函数,将栅格像素转换为点对象集合。

ST_PixelAsPoints

ST_PixelAsCentroids函数

新增ST_PixelAsCentroids函数,将栅格像素转换为中心点对象集合。

ST_PixelAsCentroids

优化

几何模型

Geometry兼容PostGIS 3.1.4接口。

ST_AsDatasetFile函数

ST_AsDatasetFile函数支持通过Grib2数据格式输出。

缺陷修复

修复栅格netcdf导入时,空间参考获取不正确的问题。

修复多外包框下equals结果不正确,导致可能外包框更新错误的问题。

202110

内核小版本(V1.1.17)

类别

名称

描述

相关文档

新增

分区表DML支持执行期修剪

分区表支持update、delete在执行器期间(runtime)执行分区剪枝。

分区剪枝

聚合函数支持order by子句

聚合函数支持包含order by子句的简单查询。

聚合函数

trigger支持指定schema

支持在triggername前允许指定schema。

触发器

二维关联数组支持

新增支持二维关联数组。

关联数组

PX支持并行写并行读的Insert....Select....加速

跨机并行查询在Insert...Select...单写多读的基础上,改进为并行写并行读,进一步提升并行Insert...Select...的性能。

可以通过设置polar_px_insert_dop_num参数,控制写并行度,默认值为6。

  • polar_px_insert_dop_num设置为1时,执行单写多读计划。

  • polar_px_insert_dop_num设置为大于1时,执行多写多读计划。

跨机并行查询

PX支持 Insert...Select from tableless的加速

跨机并行查询支持Insert...Select from tableless(无表查询)的加速,进一步提升并行Insert...Select...的性能。

可以通过设置polar_px_enable_insert_from_tableless参数,开启或关闭无表查询加速,默认值为0。

  • polar_px_enable_insert_from_tableless=1,表示开启。

  • polar_px_enable_insert_from_tableless=0,表示关闭。

PX 支持Insert...Select对有序性敏感的SQL强制有序

跨机并行查询可以通过设置参数polar_px_enable_insert_order_sensitive,确保写入的结果强制有序,默认值为true

  • polar_px_enable_insert_order_sensitive设置为true,则SQL语句中含有order by或者是无表查询的情况,写入结果强制有序。

  • polar_px_enable_insert_order_sensitive设置为false,则并行Insert不保证有序。

PX支持RowNum

跨机并行查询新增支持Oracle兼容的RowNum表达式。

PX阻塞DDL超时取消

DDL操作与PX查询发生锁冲突而等待时,可以设置DDL等待锁的时间,如果等待超时,则强制中断PX查询,优先让DDL获得锁并完成执行。

Leading Hint支持

支持Leading Hint,Leading Hint是一个能指定超过一个表的多表Hint。

Leading Hint

DELETE FROM subquery

支持DELETE FROM subquery。

select unique的语法支持

新增select unique语法规则,支持了unique作为distinct的同义词。

UPDATING IN SPL TRIGGER

DML trigger中,支持updating('colname')条件表达式。

merge命令中的update/delete支持where

支持了merge命令中update/delete出现where的场景。

insert select 支持别名

支持了insert命令select别名的情况。

copy支持多个字符的分隔

Copy功能新增支持多个字符的分隔。

优化

修复PXpolar_row_id的支持

跨机并行查询支持polar_row_id。

standby并行回放

Standby节点通过多进程来加速回放,减少standby节点与master节点之间的延迟。

时空数据库(V4.1)

类别

名称

描述

相关文档

优化

ST_ImportFrom函数

增强ST_ImportFrom函数,增加OSS文件映射为内存文件功能,提升数据导入速度。

ST_ImportFromganos.raster.memory_oss_file_max_size

Gist/TrajGist索引

GisT索引和TrajGisT索引新增算子族trajgist_ops_multi,用于多外包框索引键值。

GisT索引TrajGisT索引ganos.trajectory.index_split_config

缺陷修复

新增矢量金字塔支持元数据信息查询。

修复轨迹对象执行相交判断时内存泄露问题。

20219

内核小版本(V1.1.16)

类别

名称

描述

相关文档

新增

outline支持手动query改写

PolarDB查询改写不符合预期时,支持使用outline来实现SQL的查询改写。

调整执行计划

PX支持AssertOp算子

PX支持执行器运行时约束检查。

跨机并行查询

PX支持Oracle Decode表达式

PX新增支持Oracle Decode表达式。

PX支持动态分区裁剪

PX支持动态分区剪裁,提升分区表hash join时的性能。

Bind Message 中支持Holdable Portal

支持SQL语句的跨事务访问, 需要在SQL中添加polar_holdable_hintHINT, 例如,SELECT /*+ polar_holdable_hint */;

Oracle风格的select for update

select for update of全面兼容Oracle语法。

优化

PX支持Const表达式

跨机并行查询支持Const表达式。

算子级内存限制

通过算子级内存限制,降低OOM风险,提升PolarDB稳定性。

时空数据库(V4.0)

类别

名称

描述

相关文档

优化

栅格表面计算函数

增强栅格表面计算函数返回Raster对象取代像素矩阵。

ST_AspectST_SlopeST_Hillshade

ST_Split函数

增强ST_Split按照指定的规则对轨迹对象进行切分返回子轨迹数组。

ST_Split

缺陷修复

修复ST_SrEqual在某些条件下判断失败的问题。

20218

内核小版本(V1.1.15)

类别

名称

描述

相关文档

新增

Index Advisor记录索引前后的代价

Index_advisor_log表中增加两列,分别表示增加索引前后的代价,方便上层应用(例如,数据库自治服务DAS) 评估创建索引带来的收益。

PX索引加速构建支持GLOBAL INDEX

PX新增支持了加速创建B-Tree索引的GLOBAL索引。

跨机并行查询使用跨机并行查询加速索引创建创建GLOBAL INDEX

20217

内核小版本(V1.1.14)

类别

名称

描述

相关文档

新增

适配GCC9编译

GCC升级至GCC9.2.1,支持更多编译优化,提高性能。

outline支持hint

outline支持hint功能来控制需要被outline抓取的执行计划。

调整执行计划

跨机并行查询支持hash分区

支持hash分区的并行查询,从而平衡I/O,改善系统性能。

对分区表使用跨机并行查询

GLOBAL INDEX支持对分区表进行DDL操作

支持在对分区表进行DDL操作时(如DROP、SPLIT、MERGE等),操作该分区表下的所有GLOBAL INDEX。

支持对分区表进行DDL操作

优化

ORA_HASH函数兼容性

ORA_HASH函数替换为DBMS_UTILITY.GET_HASH_VALUE,计算给定字符串的散列值。

时空数据库(V3.9)

类别

名称

描述

相关文档

新增

ST_RemoveDriftPoints函数

新增ST_RemoveDriftPoints函数,使用指定规则删除轨迹中的漂移点。

ST_removeDriftPoints

ST_Split函数

新增ST_Split函数,使用指定的几何对象对轨迹进行切分。

ST_Split

ST_ExportTo函数

新增ST_ExportTo函数,将轨迹导出到外部文件存储,数据库内仅保留元数据。

ST_ExportTo

ST_IsExternal函数

新增ST_IsExternal函数,检查轨迹是否存储于外部文件。

ST_IsExternal

ST_ImportFrom函数

新增ST_ImportFrom函数,将外部存储模式的轨迹重新转化为存储在数据库内的轨迹。

ST_importFrom

ST_StorageLocation函数

新增ST_StorageLocation函数,返回轨迹存储在外部的位置。

ST_StorageLocation

ST_AKID函数

新增ST_AKID函数,返回读取轨迹时,与OSS交互时所使用的AccessKeyID。

ST_AKID

ST_SetAccessKey函数

新增ST_SetAccessKey 函数,设置读取轨迹时,与OSS交互时所使用的AccessKey(包括AccessKeyIDAccessKeySecret,类似用户名与密码)。

ST_SetAccessKey

ST_SetAKID函数

新增ST_SetAKID函数,设置读取轨迹时,与OSS交互时所使用的AccessKeyID。

ST_SetAkId

ST_SetAKSecret函数

新增ST_SetAKSecret函数,设置读取轨迹时,与OSS交互时所使用的AccessKeySecret。

ST_SetAkSecret

ST_SetStorageLocation函数

新增ST_SetStorageLocation函数,设置读取轨迹时,外部文件的存储位置。

ST_SetStorageLocation

ST_DeleteGtf函数

新增ST_DeleteGtf函数,删除指定文件夹下所有的轨迹导出的文件。

ST_DeleteGTF

缺陷修复

修复创建矢量金字塔使用字符串方式过滤失败问题。

修复QGIS连接时无法列出图层列表的问题。

20216

内核小版本(V1.1.13)

类别

名称

描述

相关文档

新增

polar_stat_sql/polar_stat_plan增加IO统计展示

  • 新增可通过查询不同视图获取相关资源信息,进而方便定位性能问题。

  • 新增PolarDB PostgreSQL版(兼容Oracle)性能诊断,包含实例问题分析和SQL性能分析。

  • polar_stat_sql/polar_stat_plan视图增加IO统计展示相关参数。

性能视图性能诊断

跨机并行查询

跨机并行查询功能可用于BRIN索引扫描,进一步提升查询性能。

跨机并行查询概述

新增polar_bt_write_page_buffer_size参数,指定了索引构建过程中的写IO策略。

使用跨机并行查询加速索引创建

支持从三种粒度指定跨机并行查询的范围:

  • 系统粒度:指定所有session所有查询是否开启跨机并行查询。

  • 会话粒度:指定当前session是否开启跨机并行查询。

  • 查询粒度:指定具体查询是否开启跨机并行查询。

使用跨机并行查询进行分析型查询

支持对分区表使用跨机并行查询的功能,提升数据库性能。

对分区表使用跨机并行查询

优化

基于RTOcrash recover时间改进

支持配置polar_crash_recovery_rto参数,指定实例期望的RTO时间,从而保证在发生crash recovery时,数据库可以在期望的RTO时间内完成崩溃恢复重启,恢复可用状态。

时空数据库(V3.8)

类别

名称

描述

相关文档

新增

ST_AsDatasetFile函数

新增ST_AsDatasetFile函数,支持将指定范围的栅格对象以指定文件格式的二进制流进行返回。

ST_AsDatasetFile

ST_RasterDrivers函数

新增ST_RasterDrivers函数,支持对所有栅格数据驱动的状态进行查询。

ST_RasterDrivers

缺陷修复

修复ST_Clip函数指定空间参考进行重投影操作失败的问题。

20215

内核小版本(V1.1.12)

类别

名称

描述

相关文档

新增

跨机并行查询

支持跨机并行查询计算引擎:

  • 支持多个只读节点分布式地执行SQL查询,加速PolarDB PostgreSQL版(兼容Oracle)的查询性能。

  • 支持通过跨机并行查询加速构建索引,提升大表场景下索引创建效率。

跨机并行查询

分区表支持全局索引

分区表支持全局索引;同时支持并发构建索引,即在创建索引的过程中不阻塞表上的DML操作。

创建GLOBAL INDEX

优化

性能监控

新增max_slot_wal_keep_size参数,限制使用复制槽(replication slot)的文件大小,防止WAL文件堆积。

DBLink

默认开启Unsafe Collate下推和ALL/ANY下推,从而极大提高查询性能。可通过polar_enable_pushable_unsafe_collate_remotepolar_enable_pushable_all_any_remote参数进行关闭。

使用DBLink跨库查询数据

Rownum

Rownum进行了优化,兼容rownumvarchar2/text比较时,按照数值类型比较的行为。

polar_resource_group插件

polar_resource_group插件新增total_mem_limit_remain_sizeidle_mem_limit_rateenable_terminate_activepolicy_mem_release、enable_log等参数,避免内存占用过多而影响数据库进程。

提高只读节点启动速度

提高只读节点的启动速度,提升性能。

主备切换

通过并行回放,加速恢复主备切换后的数据库服务,通常情况下主库异常可以15s内恢复服务。

时空数据库(V3.7)

类别

名称

描述

相关文档

新增

时空并行查询

支持空间索引并行查询,提升查询效率。

开启时空并行查询

优化

栅格图像处理

ST_SubRaster函数支持栅格像元类型转换以及像元值拉伸。支持多波段遥感影像转三波段图像的AI识别场景。

ST_SubRaster

缺陷修复

修复栅格解析无效的直方图信息可能会导致数据库崩溃的问题。

修复进行投影变化操作后,数据库退出时可能会崩溃的问题。

修复栅格数据导入时可能会出现崩溃的问题。

20214

内核小版本(V1.1.11)

类别

名称

描述

相关文档

新增

idle_session_timeout参数

新增idle_session_timeout参数,用于控制空闲会话的保留时间,超出保留时间的会话将会被释放。

  • 取值范围:0~2147483647

    0(默认值)表示关闭功能。

  • 单位

    • 'ms':毫秒(默认单位)

    • 's':秒

    • 'min':分钟

    • 'h':小时

    • 'd':天

设置参数

约束DDL

支持ALTER TABLE ... ENABLE/DISABLE CONSTRAINT,用于启用或禁用约束(CONSTRAINT)。

ALTER TABLE ... ENABLE/DISABLE CONSTRAINT

表空间DDL

支持表空间( TABLESPACE)相关的DDL操作,例如CREATE TABLESPACE。

Numeric数据类型

兼容OracleNumeric数据类型。如若需要可以通过设置polar_enable_comp_numeric_format参数进行开启,该参数默认关闭。开启命令如下:

SET polar_enable_comp_numeric_format=on;

缺陷修复

修复DBMS_JOB内置包跨库使用的问题。

修复CONNECT BYROWNUM函数连用的问题。

修复CONNECT BY找不到上层对象的问题。

时空数据库(V3.6)

类别

名称

描述

相关文档

新增

栅格数据类型

新增ST_RPCGeoreference函数,用于获取栅格数据RPC(Rational Polynomial Coefficients)信息。

ST_RPCGeoreference

新增ST_SetRPCGeoreference函数,用于设置栅格数据RPC信息。

ST_SetRPCGeoreference

新增ST_RPCRectify函数,用于根据栅格影像的RPC参数对栅格进行校正操作,返回校正后的栅格对象。

ST_RPCRectify

GisT索引

新增使用并行方式创建GisT索引。

并行创建空间索引

缺陷修复

修复使用pg_dump时,自定义的空间参考无法导出的问题。

20213

内核小版本(V1.1.10)

类别

名称

描述

相关文档

新增

分区表

分区表支持Before Row-level触发器。

Before Row-level触发器

polar_outline插件

支持使用polar_outline调整执行计划,实现SQL语句优化。

调整执行计划

优化

分区表

INTERVAL RANGE分区支持子分区模板。

子分区模板

性能优化

通过在共享内存中缓存表大小信息,优化了数据文件I/O读性能。

兼容性

INTERVALFLOAT8数据类型支持如下操作符:

  • +

  • -

  • *

  • /

兼容性

新增OPT_PARAM HINT,通过该HINT可以在SQL级别指定特定参数的值。

OPT_PARAM Hints

时空数据库(V3.5)

类别

名称

描述

相关文档

新增

大对象存储优化

新增Simple存储策略,优化大对象存储。

使用Simple存储策略

优化

栅格对象

使用栅格对象更新一个具有分块数据的栅格对象进行时,系统会自动删除原有栅格对象的分块数据。

缺陷修复

修复Trajectory扩展无法升级的问题。

修复某些情况下,栅格对象采用Average重采样时出错的问题。

修复轨迹对象中如果多个时间戳的轨迹点相同,查询结果可能不正确的问题。

修复Geos对象转换失败后,直接退出的问题,同时对转换失败的原因进行提示。

内核小版本(V1.1.9)

类别

名称

描述

相关文档

新增

分区表

新增INTERVAL RANGE分区。INTERVAL RANGE分区是RANGE分区的扩展。当新插入的数据超过现有分区的范围时,该分区允许数据库自动创建新分区。

INTERVAL RANGE分区

RANGE分区和INTERVAL RANGE分区可以相互转换。

转换RANGEINTERVAL RANGE分区

新增SUBPARITITION TEMPLATE子分区模板,用于快速定义子分区,简化子分区的规范。您只需在子分区模板中定义一次子分区描述符,然后将该子分区模板应用于表中的每个分区,从而快速批量地为表中的分区定义子分区描述符。

子分区模板

AWR监控

自动负载信息库(Automatic Workload Repository,简称AWR)是一种性能收集和分析工具。通过AWR工具,可以从数据库的动态视图等统计信息记录中生成一份该时段的统计分析报告,分析数据库在某个时间段的性能。

优化

分区表

分区表在计划阶段进行修剪优化,提高查询性能。

数据类型

PolarDB PostgreSQL版(兼容Oracle)使用timestamp作为Date数据类型,精确到微秒;而OracleDate数据类型只精确到秒,为了保证PolarDB PostgreSQL版(兼容Oracle)Oracle的兼容性,将自动把Date数据类型转换为 timestamp(0)。

WAL

采用流水线技术,优化WAL开销占比,提高整体系统的性能。

TO_CHAR

在服务端自动识别TO_CHAR(text1, text2)的格式:如果text1为合法的日期类型,text2为合法的日期格式类型, 则自动将text1当成timestamp来处理。

缺陷修复

修复无用SIGHUP信号。

修复MERGE INTO分区表会导致崩溃的问题。

修复pg_icu_collate_names时会访问非法内存的问题。

修复ALTER QUEUE ADD CALL访问非法内存的问题。

修复POLICY系统表定义中rdname字段的属性设置为定长,但是传入新值时使用的却是变成字符串,导致访问非法内存的问题。

修复TDE功能中没有声明导致函数返回值地址被截断的问题。

修复roaringbitmap插件对输入异常参数时访问非法内存的问题。

修复当只读节点落后很多日志时,可能不会及时给主节点流复制反馈,导致流复制链接中断的问题。

时空数据库(V3.4)

类别

名称

描述

相关文档

新增

大对象存储优化

为了加速时空数据索引构建、提高空间查询效率,优化时空对象的存储模式,支持使用时空大对象特征签名,新增polar_enable_storage_partial参数,支持时空对象行内与行外组合存储。

时空大对象特征签名

栅格模块支持函数并行化执行

ST_ImportFrom函数支持栅格数据并行化导入。

ST_ImportFrom

ST_BuildPyramid函数支持栅格数据并行创建金字塔。

ST_BuildPyramid

Trajectory Empty

新增Trajectory Empty对象,支持某些场景下不符合要求而返回NULL对象。

缺陷修复

修复ST_AddZ函数在16BSI情况下可能结果不正确的问题。

修复Trajectory模块在某些情况下无法升级的问题。

修复Trajectory模块中部分函数无法利用索引的问题。

修复部分nd函数没有正确处理时间段不相交的场景,导致返回error而非false的问题。

20211

内核小版本(V1.1.8)

类别

名称

描述

相关文档

新增

DBMS_STATS插件

支持DBMS_STATS插件,用于收集数据库运行过程中的相关统计信息,提供现有统计信息的备份,以及将备份统计项进行还原。

DBMS_STATS

写后读事务拆分

READ COMMITTED级别下,支持写后读语句的事务拆分。可将事务开启到事务结束中所有的读请求发送到只读节点,从而保证事务中的读写一致性。

事务拆分

优化

OR表达式

原有OR表达式无法自动转换为UNION ALL,导致部分情况下查询效率很低,必须全表扫描。现支持将OR表达式自动转换为UNION ALL,实现逻辑优化,大幅提升查询性能。

ECPG兼容性

  • ECPGPlus兼容Pro*C部分语法。

  • ECPGPlus兼容原生Oracle的连接方式。

Oracle兼容性

GROUP BY CONST/EMPTY子句兼容Oracle。

PBP

默认打开主节点的持久化缓冲池(Persisted Buffer Pool)。

同步Kafka分区表

PolarDB PostgreSQL版(兼容Oracle)kafka同步分区表配置优化。按父表名配置,同步后的表名也是父表名。

用户

调整CREATE USER ... IDENTIFIED BY ...语法仅支持创建普通用户。

创建用户

缺陷修复

修复DBMS_JOB的无主键表在逻辑复制中删除任务报错的问题。

修复资源组(Resource Group)进程在内存资源超限时出现内存泄漏的问题。

修复Standby Promote时间较长的问题。

修复***_all_tables视图中temporary字段的临时表参数显示问题。

修复审计日志越界内存访问的问题。

修复PolarDB PostgreSQL版(兼容Oracle)PostgreSQLDBLink查询结果截断的问题。

修复分区表子分区多分区键剪枝(prune)缺陷。

时空数据库(V3.3)

类别

名称

描述

相关文档

新增

ST_JaccardSimilarity函数

新增ST_JaccardSimilarity函数,用于计算轨迹对象相似度。

ST_JaccardSimilarity

ST_Transform函数

新增ST_Transform函数,用于将轨迹从一个空间参考系转换到另一个空间参考系。

ST_Transform

优化

矢量金字塔

创建矢量金字塔时,支持用户指定创建范围,解决在部分场景下无法自动计算空间范围的问题。

缺陷修复

修复某些环境下,Ganos数据目录设置不正确的问题。