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

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

2021年12月

内核小版本(V1.1.19)

类别名称描述相关文档
新增sql mappingPolarDB 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)兼容Oracle的all_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结果不正确,导致可能外包框更新错误的问题。

2021年10月

内核小版本(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功能新增支持多个字符的分隔。
优化修复PX对polar_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
缺陷修复新增矢量金字塔支持元数据信息查询。
修复轨迹对象执行相交判断时内存泄露问题。

2021年9月

内核小版本(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_hint的HINT, 例如,SELECT /*+ polar_holdable_hint */;
Oracle风格的select for updateselect for update of全面兼容Oracle语法。
优化PX支持Const表达式跨机并行查询支持Const表达式。
算子级内存限制通过算子级内存限制,降低OOM风险,提升PolarDB稳定性。

时空数据库(V4.0)

类别名称描述相关文档
优化栅格表面计算函数增强栅格表面计算函数返回Raster对象取代像素矩阵。ST_AspectST_SlopeST_Hillshade
ST_Split函数增强ST_Split按照指定的规则对轨迹对象进行切分返回子轨迹数组。ST_Split
缺陷修复修复ST_SrEqual在某些条件下判断失败的问题。

2021年8月

内核小版本(V1.1.15)

类别名称描述相关文档
新增Index Advisor记录索引前后的代价Index_advisor_log表中增加两列,分别表示增加索引前后的代价,方便上层应用(例如,数据库自治服务DAS) 评估创建索引带来的收益。
PX索引加速构建支持GLOBAL INDEXPX新增支持了加速创建B-Tree索引的GLOBAL索引。跨机并行查询使用跨机并行查询加速索引创建创建GLOBAL INDEX

2021年7月

内核小版本(V1.1.14)

类别名称描述相关文档
新增适配GCC9编译GCC升级至GCC9.2.1,支持更多编译优化,提高性能。
outline支持hintoutline支持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(包括AccessKeyID和AccessKeySecret,类似用户名与密码)。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连接时无法列出图层列表的问题。

2021年6月

内核小版本(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是否开启跨机并行查询。
  • 查询粒度:指定具体查询是否开启跨机并行查询。
使用跨机并行查询进行分析型查询
支持对分区表使用跨机并行查询的功能,提升数据库性能。对分区表使用跨机并行查询
优化基于RTO的crash 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函数指定空间参考进行重投影操作失败的问题。

2021年5月

内核小版本(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进行了优化,兼容rownum和varchar2/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
缺陷修复修复栅格解析无效的直方图信息可能会导致数据库崩溃的问题。
修复进行投影变化操作后,数据库退出时可能会崩溃的问题。
修复栅格数据导入时可能会出现崩溃的问题。

2021年4月

内核小版本(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数据类型兼容Oracle的Numeric数据类型。如若需要可以通过设置polar_enable_comp_numeric_format参数进行开启,该参数默认关闭。开启命令如下:
SET polar_enable_comp_numeric_format=on;
缺陷修复修复DBMS_JOB内置包跨库使用的问题。
修复CONNECT BY与ROWNUM函数连用的问题。
修复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时,自定义的空间参考无法导出的问题。

2021年3月

内核小版本(V1.1.10)

类别名称描述相关文档
新增分区表分区表支持Before Row-level触发器。Before Row-level触发器
polar_outline插件支持使用polar_outline调整执行计划,实现SQL语句优化。调整执行计划
优化分区表INTERVAL RANGE分区支持子分区模板。子分区模板
性能优化通过在共享内存中缓存表大小信息,优化了数据文件I/O读性能。
兼容性INTERVAL与FLOAT8数据类型支持如下操作符:
  • +
  • -
  • *
  • /
兼容性新增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分区可以相互转换。转换RANGE和INTERVAL RANGE分区
新增SUBPARITITION TEMPLATE子分区模板,用于快速定义子分区,简化子分区的规范。您只需在子分区模板中定义一次子分区描述符,然后将该子分区模板应用于表中的每个分区,从而快速批量地为表中的分区定义子分区描述符。子分区模板
AWR监控自动负载信息库(Automatic Workload Repository,简称AWR)是一种性能收集和分析工具。通过AWR工具,可以从数据库的动态视图等统计信息记录中生成一份该时段的统计分析报告,分析数据库在某个时间段的性能。
优化分区表分区表在计划阶段进行修剪优化,提高查询性能。
数据类型PolarDB PostgreSQL版(兼容Oracle)使用timestamp作为Date数据类型,精确到微秒;而Oracle的Date数据类型只精确到秒,为了保证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函数支持栅格数据并行创建金字塔。S​T_BuildPyramid
Trajectory Empty新增Trajectory Empty对象,支持某些场景下不符合要求而返回NULL对象。
缺陷修复修复ST_AddZ函数在16BSI情况下可能结果不正确的问题。
修复Trajectory模块在某些情况下无法升级的问题。
修复Trajectory模块中部分函数无法利用索引的问题。
修复部分nd函数没有正确处理时间段不相交的场景,导致返回error而非false的问题。

2021年1月

内核小版本(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)到PostgreSQL的DBLink查询结果截断的问题。
修复分区表子分区多分区键剪枝(prune)缺陷。

时空数据库(V3.3)

类别名称描述相关文档
新增ST_JaccardSimilarity函数新增ST_JaccardSimilarity函数,用于计算轨迹对象相似度。ST_JaccardSimilarity
ST_Transform函数新增ST_Transform函数,用于将轨迹从一个空间参考系转换到另一个空间参考系。ST_Transform
优化矢量金字塔创建矢量金字塔时,支持用户指定创建范围,解决在部分场景下无法自动计算空间范围的问题。
缺陷修复修复某些环境下,Ganos数据目录设置不正确的问题。