2022年

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

说明

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

show polar_version;

2022年12月

内核小版本(V1.1.29)

类别

名称

描述

相关文档

新增

兼容Oracle DATE类型

支持Oracle兼容的64位DATE类型。

支持64位DATE类型

时空数据库(V5.1)

类别

名称

描述

相关文档

新增

ST_GeoHashID函数

支持将GeoHash字符转为整数类型。

ST_GeoHashID

ST_GeoHashFromID函数

支持将Int类型转为GeoHash字符串。

ST_GeoHashFromID

ST_UpdatePyramid函数

支持更新矢量快显金字塔。

ST_UpdatePyramid

ST_SetUpdatePyramidRules函数

支持设置更新金字塔操作的规则。

ST_SetUpdatePyramidRules

ST_BuildPyramidUseGeomSideLen函数

支持考虑矢量外包框大小来构建矢量快显金字塔。

ST_BuildPyramidUseGeomSideLen

ST_InterpolateRaster函数

支持空间插值。

ST_InterpolateRaster

ST_Contour函数

支持等值线生成。

ST_Contour

ST_Statistics函数

支持以MultiPoint的方式对栅格数据进行自定义权重的统计分析操作。

ST_Statistics

ST_Resample函数

新增ST_Resample轨迹重采样功能。

ST_Resample

ST_Density函数

新增ST_Density轨迹密度统计功能。

ST_Density

ST_StayPoint函数

新增ST_StayPoint轨迹驻点识别功能。

ST_StayPoint

缺陷修复

修复运行st_buildhistogram后raster对象变为空的问题。

修复轨迹ST_AsTable传入空值导致崩溃问题和z值错误问题。

修复ST_Split中按GeoHash切分时结果错误的问题。

修复ST_Tile 属性字段编码错误问题。

2022年11月

内核小版本(V1.1.28)

类别

名称

描述

相关文档

新增

smlar插件

您可以通过在数据库内使用smlar插件来高效计算数据相似度。

smlar

部分参数默认值调整

自数据库内核小版本V1.1.28起,PolarDB PostgreSQL版(兼容Oracle)调整了部分参数的默认值,仅针对新建集群生效,参数默认值的调整可以明显提升数据库的性能,您可以根据需要在控制台自行修改。

部分参数默认值调整说明

hypopg插件

hypopg插件用于帮助您检查某类索引是否有助于一个或者多个查询。

hypopg

pg_bigm插件

pg_bigm插件提供了全文本搜索能力,允许创建一个二元语法(2-gram)的GIN索引来加速搜索过程。

pg_bigm

hll插件

hll插件支持的数据类型HyperLogLog(hll)可以帮助您快速预估PV、UV等业务指标。

hll

存储过程中使用holdable cursor

holdable模式可以使当前游标不被立即释放,从而实现游标跨事务操作。

存储过程中使用holdable cursor

varbitx插件

PolarDB PostgreSQL版(兼容Oracle)对varbit插件进行了扩展,支持更多的BIT操作,可以覆盖更多应用场景。

varbitx

ZomboDB插件

ZomboDB是一个PostgreSQL扩展插件,支持原生的访问方式,为PostgreSQL数据库带来了强大的文本索引和分析功能。

ZomboDB

2022年10月

内核小版本(V1.1.27)

类别

名称

描述

相关文档

新增

新增实时物化视图

PolarDB新增实时物化视图功能,当依赖表进行DML操作时,实时物化视图的数据始终和依赖表的数据保持一致,同时可以大幅提升查询性能。

实时物化视图

sql_mapping支持用户自主使用

您无需修改配置文件即可使用polar_sql_mapping插件。

polar_sql_mapping

新增pg_sphere插件

pg_sphere是支持球形数据类型、计算函数和操作符的PostgreSQL插件。

pg_sphere

Global Partitioned Index支持执行器剪枝

Global Partitioned Index支持索引剪枝优化,即优化器剪枝和执行器剪枝。

创建GLOBAL INDEX

支持failover slot

PolarDB PostgreSQL版(兼容Oracle)的逻辑复制槽故障转移(Logical Replication Slot Failover)功能可以将所有的逻辑复制槽从主实例同步到备实例,从而实现逻辑复制槽的故障转移。

逻辑复制槽故障转移(Logical Replication Slot Failover)

会话级隔离级别设置

您可以设置会话级隔离级别,设置后对当前会话有效,语法如下:

ALTER SESSION SET ISOLATION_LEVEL = {SERIALIZABLE | READ COMMITTED};
说明

其中,隔离级别如下:

  • SERIALIZABLE:可串行化。

  • READ COMMITTED:读已提交。

PX新增按tuple粒度扫描的方式

新增polar_px_scan_granularity参数,用于控制PX按照不同的粒度扫描,取值如下:

  • set polar_px_scan_granularity = row;:表示PX按照tuple粒度进行扫描。

  • set polar_px_scan_granularity = block;:默认取值,表示PX按照block粒度扫描。

说明

当扫描的数据较多时,按照block粒度切分扫描会具备更高的性能。

polar_enable_strategy_reject_buffer参数

新增polar_enable_strategy_reject_buffer参数,用于控制批量读场景下是否允许突破ring buffer的限制。取值如下:

  • off(默认):表示批量读场景下仍然使用ring buffer。如果从ring中获取的buffer为脏页,则backend进程需将该脏页落盘。

  • on:表示批量读场景下允许突破ring buffer限制。开启该参数后,如果从ring中获取的buffer为脏页,则允许从buffer pool中获取一个新的buffer。开启该参数后backend进程自身刷脏次数会降低,可提升查询速度,但由于突破了ring buffer限制,buffer pool可能会被当前查询的表数据占满,当多个连接查询多个不同表时,仍然会产生buffer淘汰从而带来IO操作。

2022年9月

内核小版本(V1.1.26)

类别

名称

描述

相关文档

新增

支持DBMS_METADATA

通过DBMS_METADATA提供的方法获取数据库对象的元数据信息,用于重建数据库中的对象。

DBMS_METADATA

支持nls_timestamp(_tz)_format

支持nls_timestamp(_tz)_format时间显示格式。

nls_timestamp(_tz)_format

支持登录登出触发器

登录登出触发器是一种事件触发器,提供了可以在用户登录/登出时触发指定函数或存储过程的功能。

登录登出触发器

批量写入支持全部写到缓存

新增polar_enable_strat_bulkwrite参数,用于控制session写入的数据占用缓存(cache)空间的大小,默认值为true,取值如下:

  • true:与原生PostgreSQL行为完全一致。每个session写入的数据只允许占用部分缓存空间。

  • false:session写入的数据允许使用全部的缓存空间。

说明
  • 通常情况下,该参数保持默认值true即可。可以保证每个session都有一部分专属缓存空间,不会将其他session的缓存数据淘汰掉。

  • 建议将参数值设为false的场景:希望批量写入数据的数据全部都在缓存,读取这部分数据时基本都可在缓存命中,减少读盘次数。

    建议与polar_enable_strat_scan参数一同使用,将两者的值都设为false,数据既可以写入到全部的缓存空间,也可以读取到全部的缓存空间。

    set polar_enable_strat_bulkwrite = false; -- 允许写入全部缓存空间
    set polar_enable_strat_scan = false; -- 允许读取/加载到全部缓存空间

聚集函数下支持ORDER BY子句

当存在聚集函数,但不存在分组子句,支持ORDER BY子句。

  • 语法

    SELECT aggfunc(xx) FROM yy ORDER BY any target;
  • 开启方法

    在控制台中将polar_enable_aggfunc_allowed_sort_target参数设置为on

ORDER BY 子句

ORDER BY支持识别distinct表达式

支持在ORDER BY子句中识别distinct对象组成的表达式。

  • 语法

    SELECT distinct xx, yy FROM zz ORDER BY expr(xx, yy);
  • 开启方法

    在控制台中将polar_enable_distinct_order_by_expr参数设置为on

ORDER BY识别带别名的表达式

支持在ORDER BY子句中识别带有别名的表达式。

  • 语法

    SELECT xx yy, mm nn FROM zz ORDER BY expr(yy,nn);
  • 开启方法

    在控制台中将polar_enable_order_by_use_alias_expr参数设置为on

说明

开启后,如果SELECT中的对象别名与FROM子句中的表的列名重复,则ORDER BY子句会优先将重名对象识别为SELECT中的对象。

历史兼容性功能全部开启

PolarDB PostgreSQL版(兼容Oracle)新建集群默认开启以下参数:

  • polar_comp_redwood_greatest_least

  • polar_comp_redwood_strings

  • polar_enable_rownum_connectby_operator

  • polar_enable_rownum_rewrite_for_write

  • polar_plsql_auto_unpin_failed_portal

  • polar_plsql_auto_unpin_failed_portal_stmt_tx

  • polar_enable_inline_cte

  • polar_enable_comp_numeric_format

需要通过控制台开启以下参数:

  • polar_handle_substrb_utf8_truncation

  • polar_enable_base64_decode

时空数据库(V4.9)

类别

名称

描述

相关文档

新增

ST_Intersection聚合函数

支持将Geometry对象数组聚合操作。

ST_Intersection

ST_AddZ函数

支持传入Z坐标数组作为参数,将Geometry 2D/3DM转为Geometry3D/4D。

ST_AddZ

ST_SetValue函数

支持指定像素位置设置像素值,以及按照指定几何对象空间范围设置像素值。

ST_SetValue

优化

S​T_ExportTo函数

支持将Raster对象导出为cog文件。

ST_ExportTo

ST_CreateRast函数

支持将规则的网格点多条记录或者数组转换为栅格对象。

ST_CreateRast

ST_Split函数

按照时间切分时,支持指定开始时间,并支持按轨迹点序号切分。

ST_Split

ST_Union函数

支持按内存使用量分批次执行,避免大数据量造成OOM。

ST_Union

ST_CreateRast函数

支持基于HDFS栅格数据创建。

ST_CreateRast

ST_ImportFrom函数

支持基于HDFS栅格数据导入。

ST_ImportFrom

S​T_ExportTo函数

支持栅格数据导出到HDFS文件系统。

ST_ExportTo

缺陷修复

修复ST_makeTrajectory函数可能会崩溃的问题。

修复ST_lcsSimilarity函数无法识别以天为单位的时间段问题。

修复ST_AsEWKB函数无法转换从数据表中构建出的轨迹问题。

修复ST_BuildPyramid函数,解决超大数据构建矢量金字塔时的内存占用问题。

2022年8月

内核小版本(V1.1.25)

类别

名称

描述

相关文档

新增

pgAudit插件

支持pgAudit插件,提供生成审计日志的能力。

pgAudit

支持DBMS_UTILITY.FORMAT_ERROR_BACKTRACE

新增DBMS_UTILITY.FORMAT_ERROR_BACKTRACE函数,用于返回异常抛出位置的调用堆栈的格式化内容。

DBMS_UTILITY

支持直接修改视图的基础表类型

当基础表上建有简单视图,支持直接修改基础表列的数据类型。

ALTER TABLE

支持dml from subquery功能

支持在DML(INSERTUPDATEDELETE)语句中使用子查询。

可以通过polar_enable_dml_from_subquery参数开启或关闭dml from subquery功能。默认值为true,取值如下:

  • true:开启该功能。

  • false:关闭该功能。

DML支持GLOBAL PARTITIONED INDEX SCAN

支持使用GLOBAL PARTITIONED INDEX SCAN进行DML操作。

DML支持GLOBAL PARTITIONED INDEX SCAN

大小写不敏感

新增大小写不敏感功能,开启大小写不敏感功能后,对于无双引号、双引号+全大写和双引号+全小写的数据库对象被视为等价。

大小写不敏感

新增Oracle内置函数

PolarDB PostgreSQL版(兼容Oracle)新增以下Oracle内置函数:

  • to_timestamp/to_char/to_date(.., nlsparam)

  • wm_concat

  • bitand/bitor

  • to_dsinterval/to_yminterval

默认安装已有插件

PolarDB PostgreSQL版(兼容Oracle)默认安装以下插件:

  • polar_from_tz

  • polar_nlssort

  • polar_regexp_like

  • polar_utility

  • sys_guid

  • polar_constraint

  • polar_parameter_check

  • polar_worker

  • roaringbitmap

  • polar_csn

说明

其中前6个插件为兼容性插件。

2022年7月

内核小版本(V1.1.24)

类别

名称

描述

相关文档

新增

plan_cache_mode

新增plan_cache_mode参数,表示允许设置计划缓存模式。默认值为auto,取值如下:

  • auto:表示自动从custom/generic两种模式中选择。

  • force_custom_plan:表示强制使用优化器生成的custom plan。

  • force_generic_plan:表示强制使用计划缓存中的generic plan。

时空数据库(V4.7)

类别

名称

描述

相关文档

新增

ST_makeTrajectory函数

支持将表格中的行转化为轨迹。

ST_makeTrajectory

ST_AsTable函数

支持将轨迹转化为表类型。

ST_AsTable

缺陷修复

修复栅格数据操作时,匿名临时表无法自动删除的问题。

2022年6月

内核小版本(V1.1.23)

类别

名称

描述

相关文档

新增

支持DBMS_SQL.define_array。

DBMS_SQL包增加了DEFINE_ARRAY存储过程。

DBMS_SQL

支持同时使用%TYPE和:=指定默认值。

存储过程中支持同时使用%TYPE和分配运算符:=指定默认值。

在变量声明中使用%TYPE

Global Partitioned Index

支持全局分区索引,支持在分区表上创建全局分区索引。

创建GLOBAL INDEX

pg_hint_plan

pg_hint_plan插件通过特殊的注释语句提示来调整既定的执行计划。

pg_hint_plan

优化

resource manager内存释放过程性能优化

  • 新增mem_release_policy参数,表示内存释放策略。默认值为default,取值如下:

    • default:表示当数据库超限后,RM启动自适应策略,此参数不能与其他参数合并使用,按照resource manager默认策略进行内存释放。进程分为idle进程数组和active进程数组,优先对idle进程进行内存释放,然后再对active进程进行内存释放。

    • cancel_query:只对active进程进行取消查询操作。

    • terminate_idle_backend:停止用户idle进程。

    • terminate_any_backend:停止任意用户进程。

    • none:不做任何操作。

  • 新增total_memcontext_dump_rate参数,表示memory context信息输出阈值。默认值为75,取值范围:20~95,重启或者reload生效。

  • 新增max_proc_mcxtdump_num参数,表示memory context信息输出的进程数。默认值为1,取值范围:1~100,重启或者reload生效。

  • 新增interval_max_num参数,表示memory context信息输出的间隔数。默认值为0,取值范围:0~INT32_MAX,重启或者reload生效。

2022年3月

内核小版本(V1.1.22)

类别

名称

描述

相关文档

新增

隐式类型转换

新增隐式类型转换功能,以兼容Oracle的隐式转换矩阵,且数字类型支持高精度到低精度的转换。

PX Analyze功能

  • 新增polar_px_enable_explain_allstat参数,用于并行查询场景下,配合explain analyze命令打印出每个worker的执行情况,包括每个worker处理的tuple数量,耗时等。

  • 新增polar_px_explain_memory_verbosity参数,用于并行查询场景下,配合explain analyze命令打印每个worker的内存使用情况。取值如下:

    • summary :汇总性的打印worker内存使用情况。

    • detail : 详细打印每个worker内存使用情况。

gtt支持修改列类型

全局临时表支持ALTER语句。

port线下支持clang

支持clang编译。

时空数据库(V4.6)

类别

名称

描述

相关文档

新增

对象存储服务路径

栅格数据新增支持用户自建的Minio服务器访问。

对象存储服务路径

ST_PointValues函数

新增栅格ST_PointValues函数返回所有波段像素值。

ST_PointValues

缺陷修复

修复栅格ST_Clip函数波段顺序错误的问题。

修复栅格更新时由于缺少主键索引导致性能较低的问题。

修复轨迹从OSS读取数据失败时支持重试。

时空数据库(V4.5)

类别

名称

描述

相关文档

新增

新增Ganos支持PostgreSQL 14系列。

优化

增强外部存储的轨迹对象增加缓存,提升访问性能。

缺陷修复

修复栅格数据导出到OSS会缺少文件后缀的问题。

修复栅格对部分数据统计时失败的问题。

2022年1月

内核小版本(V1.1.20)

类别

名称

描述

相关文档

新增

支持表的闪回删除

新增闪回删除功能,可以快速恢复已经删除的表,以及查看和清理回收站。

闪回删除

OPT_PARAM Hint功能扩展

增加了OPT_PARAM Hint在SQL级别指定特定的参数值。

OPT_PARAM Hints

PX多级分区表

支持多级分区的并行查询。

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

DML use GLOBAL INDEX

支持使用GLOBAL INDEX SCAN进行DML操作。

DML支持GLOBAL INDEX SCAN

支持GBK/GB18030编码

支持GBK/GB18030服务器编码格式。

指定服务器编码格式

时空数据库(V4.4)

类别

名称

描述

相关文档

新增

ST_LinearStretch函数

新增ST_LinearStretch函数,将影像进行线性拉伸,作为一个新的raster返回。

ST_LinearStretch

ST_BuildPercentiles函数

新增ST_BuildPercentiles函数,统计影像的像素值百分比。

ST_BuildPercentiles

ST_ComputeStatistics函数

新增ST_ComputeStatistics函数,一次性计算栅格数据的统计值,直方图以及百分比。

ST_ComputeStatistics

ST_Percentile函数

新增ST_Percentile函数,获取影像的像素百分比。

ST_Percentile

优化

并行计算

ST_SummaryStats和ST_BuildHistogram函数支持并行计算能力。

ST_ExportTo函数

ST_ExportTo函数在导出数据时,如果目标文件已存在,返回false取代报错消息。

ST_ImportFrom函数

ST_ImportFrom函数在导入数据时出错,会返回具体的错误详情方便排查错误原因。

ST_ImportFrom

缺陷修复

修复栅格裁剪时由于四舍五入可能会有半个像素丢失的问题。

修复由于栅格数据带有NANINF等数据,在导入和统计值会出错的问题。