默认行为变更说明

更新时间: 2023-09-08 14:06:32

本文将会记录Hologres每个版本中的默认行为变更。

说明

参数更名是向下兼容的,即低版本的参数名仍可使用,但是更推荐使用新参数名。

V2.0版本默认行为变更说明(2023年6月)

能力优化

  • Flink消费Hologres Binlog不再支持Holohub模式('sdkMode'='holohub'),全面转为JDBC模式,新模式更稳定,支持数据类型更丰富。您在升级Hologres实例版本到V2.0版本前,请按下列步骤检查Flink任务与Hologres实例,以保证Flink任务正常进行,详情请参见通过JDBC消费Hologres Binlog

    • 将Flink VVR版本升级到6.0.7及以上,系统会自动将Holohub模式切换为JDBC模式。

    • 需要授予用户如下权限其中之一:

      • 实例的Superuser权限。

      • 目标表的Owner权限,CREATE DATABASE权限及实例的Replication Role权限。

  • Flink维表和结果表不再支持RPC模式('sdkMode'='rpc''rpcMode'='true'),全面转为JDBC模式。您在升级Hologres实例版本到V2.0版本前,请按下列步骤检查Flink任务与Hologres实例,以保证Flink任务正常进行,详情请参见实时数仓Hologres

    • 如果您的Flink VVR为6.0.7及以上版本,系统会自动将RPC模式切换为JDBC模式。

    • 如果您的Flink VVR为6.0.3~6.0.6版本,您需要将Flink作业中的'sdkMode'='rpc'参数改为'sdkMode'='jdbc'或者将'rpcMode'='true'参数改为'rpcMode'='false'

    • 如果您的Flink VVR为6.0.2及以下版本,您需要将Flink作业中的'rpcMode'='true'参数改为'rpcMode'='false'

    • 如果您的实例连接数不足,推荐配置connectionPoolName参数以共享连接池,或将Flink VVR版本升级到6.0.7及以上版本并使用'sdkMode'='jdbc_fixed'模式,该模式不占用连接数。

    • 原RPC模式不会对同一批次中相同主键的数据做去重,切换为JDBC模式会自动去重,如果业务场景需要保留完整的数据,可以通过设置'jdbcWriteBatchSize'='1'防止去重。

  • Hologres实例从V2.0版本起,不再支持通过Blink实时点查和写入Hologres。建议您先将Blink作业迁移至Flink,而后进行Hologres的版本升级。

V2.0版本默认行为变更说明(2023年4月)

能力优化

  • 列存不再支持Segment存储格式,有Segment格式的实例暂不支持升级到V2.0及以上版本,可以通过工具函数hg_convert_segment_orc完成批量格式转换,详情请参见更改列存表的数据存储格式

  • 为避免误用Table Group造成资源浪费,从V2.0开始限制单Table Group及实例级别总Shard数上限,详情请参见Table Group与Shard Count操作指南

  • DataHub写入不再支持SDK(遗留)模式,全面转为JDBC模式,新模式更稳定,支持数据类型更丰富。

  • 默认装载Binlog扩展,JDBC消费时,无需手动创建相关扩展。通过JDBC消费Binlog,WAL Sender数量配额默认增加10倍,从200 Slot/32C扩大至2000 Slot/32C,详情请参见通过JDBC消费Hologres Binlog

  • 备份恢复能力,分层存储能力,完成Beta阶段,生产可用。

  • Share级多副本能力,完成Beta阶段,生产可用,详情请参见单实例Shard级多副本

  • 表属性设置参数规范化:列名含大写时表属性设置语法变更,详情请参见建表概述。bitmap_columns属性禁止设为auto。该变更不影响已有表的正常使用。

  • HG_CREATE_TABLE_LIKE函数支持继承Create Index索引,继承Serial类型的列,继承Proxima向量列。

V1.3版本默认行为变更说明(2023年6月)

  • 从Hologres V1.3.53版本开始,replica count数必须小于等于Worker个数,详情请参见单实例Shard级多副本

  • Avg函数计算结果优化:Hologres从 V1.3版本开始,优化Avg函数的实现,完整保留计算结果(V1.3以下版本默认只保留6位,结果超过6位就截断)。

  • Decimal类型转换为Text类型结果优化:Hologres从 V1.3.46版本开始,将Deciaml转换为Text类型后,结果为原生结果(V1.3.46以前版本的结果展示为科学计数法)。示例SQL如下:

    create table t (a int, b decimal(38,10));
    insert into t values (1,1);
    insert into t values (1,0);
    select a,b,b::text from t;
    
    --1.3.46及以上版本的结果:
    a	|  b	        |b
    --+-------------+------
    1 |0.0000000000	|0.0000000000
    1 |1.0000000000	|1.0000000000
    
    
    --1.3.46以前版本的结果:
    a	|  b	        |b
    --+-------------+------
    1 |0.0000000000	|0.E-10
    1 |1.0000000000	|1.0000000000

V1.3版本默认行为变更说明(2023年2月)

能力优化

从Hologres V1.3.36版本开始,SLPM模型下支持跨Schema创建视图,详情请参见在SLPM模式下创建跨Schema的视图(Beta)

V1.3版本默认行为变更说明(2023年1月)

能力优化

  • Segment存储格式的表将在Hologres V2.0开始不再支持,从Hologres V1.3.35版本开始,提供批量将Segment格式的表转换为ORC格式表的命令语句,方便存量表的迁移,详情请参见Hologres Segment格式下线通知更改列存表的数据存储格式。未完成格式转换的实例,将无法升级到更高版本。

  • 从Hologres V1.3.35版本开始,Fixed Plan场景支持更多GUC参数值默认为on,从而提升易用性和性能,详情请参见Fixed Plan加速SQL执行

V1.3版本默认行为变更说明(2022年12月)

能力优化

  • 2022年12月26日起,新购实例(包含使用备份恢复的新实例)不再提供VPC 类型的域名(VPC Endpoint),使用更加安全的指定VPC类型的域名(指定VPC Endpoint)代替。指定VPC Endpoint仅与您购买实例时选择的VPC网络联通,提供更好的安全性和隔离性。已有实例不受影响,建议您关闭原有VPC Endpoint,同时改为指定VPC Endpoint。

  • 从Hologres V1.3.31版本开始,默认开启查询MaxCompute加密数据和Hologres数据存储加密的配置,开箱即可用,无需额外工单,详情请参见数据存储加密查询MaxCompute加密数据(BYOK模式)

V1.3版本默认行为变更说明(2022年11月)

能力优化

V1.3版本默认行为变更说明(2022年10月)

能力优化

  • 从Hologres V1.3.24版本开始,新增hg_worker_info系统视图,查询计算节点Worker与Shard之间的关系,帮助解决计算资源倾斜问题,详情请参见查看Worker倾斜关系

  • 从1.3.24版本开始,Hologres TTL设置的最小值1天,即86400秒,详情使用见其他SQL语句

  • 从Hologres V1.3.24版本开始,如果开启了Hologres Binlog,pg_relation_size函数的查询结果将会包含Binlog的存储量,详情请参见查看表和DB的存储大小

  • 从Hologres V1.3.24版本开始,支持按需修改分区子表的Binlog TTL,详情请参见订阅Hologres Binlog

V1.3版本默认行为变更说明(2022年09月)

能力优化

  • 从Hologres V1.3.23版本开始,支持通过SQL命令解决因TTL过期主键(PK)重复而导致导入失败的问题,详情请参见INSERT ON CONFLICT(UPSERT)

  • 从Hologres V1.3.22版本开始,支持PG系统表与用户创建的Hologres表相互Join,以及将PG系统表数据导出至Hologres表,详情请参见系统表

  • 从Hologres V1.3.22版本开始,支持主键、分区键类型为Date类型,详情请参见建表概述

  • 从Hologres V1.3.21版本开始,支持Create Table As语法,支持复制表结构的同时复制数据,详情请参见CREATE TABLE AS

V1.3版本默认行为变更说明(2022年07月)

能力优化

  • JSON相关能力完成公测,进入正式发布。

  • PostGIS相关能力完成公测,进入正式发布。

  • 导入数据时,写入方式(包括数据集成、Flink等)建议从SDK改为SQL(INSERT)。

V1.1版本默认行为变更说明(2022年07月)

为了业务提高对Hologres的自诊断和自运维能力,在2022年7月Hologres新增了若干监控指标,业务能更加精准的定位问题,查看资源使用情况,以提高系统的整体可用性。但需要注意的是:

  • 2022年7月新增的监控指标,仅适用于Hologres V1.1及以上版本,若您Hologres实例的版本较低,请您使用自助升级或加入Hologres钉钉交流群反馈,详情请参见如何获取更多的在线支持?

  • CPU和内存指标的计算方式将会更加精准,以方便业务能更好的判断资源使用情况,因此在2022年7月发布新指标后,V1.1版本的Hologres实例其CPU和内存使用率将会有部分变化,使用率在5%-10%之间波动均属正常波动。云监控的CPU和内存使用率也同步变更,请及时关注云监控的告警信息,并重新设置合理的监控阈值。

监控指标详情请参见Hologres管控台的监控指标

V1.1版本默认行为变更说明(2022年04月)

内存优化

Hologres从 V1.1.53版本开始,针对内存进行优化,优化后端运维指标的汇报,相比之前版本常驻内存更少,从而提高计算使用内存。若有需要可以升级至Hologres V1.1.53版本。

V1.1版本默认行为变更说明(2022年03月)

Fixed Plan点查场景优化

Hologres从 V1.1.49版本开始,针对Fixed Plan点查场景进行了优化,在大规模点查的情况下提升了30%以上的吞吐。若有需要请升级Hologres实例至 V1.1.49及以上版本,Fixed Plan使用详情请参见Fixed Plan加速SQL执行

V1.1版本默认行为变更说明(2022年03月)

分区子表绑定父表进行属性检测

Hologres从 V1.1.42版本开始,对分区子表绑定(ATTACH)父表时,将会进行更严格的属性检测,包括主键(PK)、索引、非空约束等,如果子表的属性与父表不一致,则会报错无法绑定。请在建表前确保分区子表的属性与父表一致,关于分区子表和父表的约束请参见CREATE PARTITION TABLE

典型场景示例如下,子表的Clustering Key和父表的Clustering Key不一致,会报错无法绑定。

--假设已有父表和其子表,其DDL如下:
BEGIN;
CREATE TABLE public.hologres_parent(
  a int,
  b text not null,
  c timestamptz not null,
  ds text,
  PRIMARY KEY(a,ds)
)
 PARTITION BY LIST(ds);
CALL set_table_property('public.hologres_parent', 'orientation', 'column');
CALL set_table_property('public.hologres_parent', 'distribution_key', 'a');
CALL set_table_property('public.hologres_parent', 'clustering_key', 'b');
CALL set_table_property('public.hologres_parent', 'event_time_column', 'c');

CREATE TABLE public.hologres_child PARTITION OF public.hologres_parent FOR VALUES IN('20201103');

COMMIT;

--创建临时分区子表
BEGIN;
CREATE TABLE IF NOT EXISTS public.tmp_hologres_child(
  a int,
  b text not null,
  c timestamptz not null,
  ds text,
  PRIMARY KEY (a,ds)
) ;
CALL set_table_property('public.tmp_hologres_child', 'orientation', 'column');
CALL set_table_property('public.tmp_hologres_child', 'distribution_key', 'a');
CALL set_table_property('public.tmp_hologres_child', 'clustering_key', 'a,b');
CALL set_table_property('public.tmp_hologres_child', 'event_time_column', 'c');
COMMIT;

--导入外表数据至临时分区子表
insert into public.tmp_hologres_child select * from foreign_table where ds='20201103';

--删除原分区子表,并将临时分区子表绑定至父表上
BEGIN;
DROP TABLE IF EXISTS  public.hologres_child;
ALTER TABLE public.tmp_hologres_child RENAME TO hologres_child;
ALTER TABLE public.hologres_parent ATTACH PARTITION public.hologres_child
FOR VALUES IN ('20201103');
COMMIT ;

--错误原因
ERROR: partition index hologres_child's immutable properties(e.g. clustering_key, event_time_column) is consistent with parent.
  Hint: create partition with [create table ... partition of ...] to be consistent with parent.
                

V1.1版本默认行为变更说明(2021年12月)

新建实例公网Endpoint默认关闭

出于数据访问控制的安全要求,自2021年12月7日00:00:00起,新建实例的公网Endpoint默认关闭,默认不提供公网访问能力。如果您需要使用公网Endpoint连接Hologres,请在Hologres管理控制台手动打开。

V1.1版本默认行为变更说明(2021年11月)

单节点计算内存上限取消20GB限制

Hologres从 V1.1.24版本开始,计算节点(Worker Node)运行时内存取消单节点20GB限制,采用动态调整节点内存。计算节点定期检查当前内存水位,从而动态分配计算节点的内存上限,尽量保证运行时内存最大化分配,保障Query获得足够内存分配。Hologres升级到V1.1.24及以上版本后,若是执行Query时还报错超内存限制,在执行计划合理的前提下,说明内存已用到了上限,需要优化SQL或者扩容实例。

说明

一个实例后端由多个节点组成,不同实例规格对应不同节点数,单个节点的总内存为64GB。内存会分为三部分,三分之一分配给计算运行时分配,三分之一分配给缓存,三分之一分配给元数据及常驻执行进程。

V1.1版本默认行为变更说明(2021年10月)

  • Auto Analyze默认打开

    Auto Analyze在Hologres V0.10版本透出,经过多用户线上验证,具备生产可用状态,因此在Hologres V1.1版本中默认行为由关闭改为打开。升级实例不受影响,新创建实例默认为打开,同时相关参数名调整如下。

    原参数名

    新参数名

    默认值

    hg_experimental_enable_start_auto_analyze_worker

    hg_enable_start_auto_analyze_worker

    on

    关于Auto Analyze的使用请参见ANALYZE和AUTO ANALYZE

  • Table Group相关函数更名

    Resharding函数在Hologres V0.10版本透出,经过多用户线上验证,具备生产可用状态,在Hologres V1.1版本中相关函数名称调整如下。

    原函数名

    新函数名

    hg_update_table_shard_count('table_name','table_group_name')

    hg_move_table_to_table_group('table_name','table_group_name')

  • MaxCompute外表访问行为变更

    在Hologres V0.10版本中,Hologres具备了全新的MaxCompute外表加速查询引擎,带来30%以上的性能提升,经过多用户线上验证,具备生产可用状态,因此新版本使用新的查询引擎查询MaxCompute外表。升级用户不受影响,新创建实例默认使用全新外表引擎。同时相关参数名调整如下。

    原参数名

    新参数名

    备注

    hg_experimental_enable_access_odps_orc_via_holo

    hg_enable_access_odps_orc_via_holo

    默认值为on。

    hg_experimental_foreign_table_executor_max_dop

    hg_foreign_table_executor_max_dop

    默认值调整为与实例Core数相同,最大为128。

    hg_foreign_table_executor_dml_max_dop

    V1.1版本新增,默认为32,针对涉及有外表的DML SQL生效。

    hg_experimental_foreign_table_split_size

    hg_foreign_table_split_size

    默认值为64MB。

    hg_experimental_foreign_table_max_partition_limit

    hg_foreign_table_max_partition_limit

    默认为512,即一次Query查询扫描最大分区为512。

    hg_experimental_enable_write_maxcompute

    V1.1版本默认为on,即默认可回写至MaxCompute,详情请参见通过SQL导出数据至MaxCompute

    有关参数的含义,请参见优化MaxCompute外部表的查询性能

  • pg_stat_activity表支持全局状态

    在Hologres V1.1之前版本中,pg_stat_activity表只记录单个接入节点(FE)的活跃连接状态,对于活跃查询的检查和处理并不方便,在1.1版本中,pg_stat_activity包含了全部接入节点的状态,有关pg_stat_activity活跃查询的管理,请参见Query管理

  • 连接数默认行为更改

    从Hologres V1.1版本开始,优化连接数默认行为,增加Superuser预留连接数,同时也优化HoloWeb连接池逻辑,强保证当连接数超过实例默认规格后,可以通过HoloWeb连接实例进行连接数管控和连接释放。关于连接数的使用请参见连接数管理

  • 修改idle_in_transaction_session_timeout默认参数值

    参数idle_in_transaction_session_timeout描述了事务进入idle状态后的超时行为,如果不设置参数值,默认不会做事务超时的释放,容易发生查询被锁死的情况。在Hologres V1.1版本中,idle_in_transaction_session_timeout值默认设置为10分钟。关于参数的使用,请参见Query管理

阿里云首页 实时数仓Hologres 相关技术圈