本文将会记录Hologres每个版本中的默认行为变更。
参数更名是向下兼容的,即低版本的参数名仍可使用,但是更推荐使用新参数名。
V2.2 默认行为变更(2024年11月)
从Hologres V2.2.17版本开始,为降低系统OOM风险,新增执行计划可申请内存的限制,默认为4 GB。如果SQL执行过程中遇到报错
“ORCA failed to produce a plan : Used memory size xxx MB exceeds maximum size 4096 MB”
,则表明已触发上述限制,建议对SQL进行简化。如短时间内难以优化,可通过如下参数调整阈值或取消限制。-- 调整阈值或取消限制,0为取消限制 ALTER DATABASE <database_name> SET hg_experimental_mp_allocated_size_limit_in_mb = 0;
从Hologres V2.2.25版本开始,对计算组执行缩容时,要求每个Worker分配的只读Shard数不超过128,以避免频繁发生OOM等问题。如果缩容后某个Worker分配的Shard数超过128,则缩容命令会报错
“The follower shard count per worker:xx should be less than or equal to the max follower shard”
,此时计算组将保持原有规格。您可以通过如下SQL查询当前数据库下计算组及其Worker分配的只读Shard数,若实例有多个数据库,则需进一步加和。-- 查询当前DB下,某个计算组的Worker分配的只读Shard数 SELECT w.worker_id, count(*) AS cnt FROM hologres.hg_warehouse_table_groups t, hologres.hg_worker_info w WHERE t.warehouse_id = w.warehouse_id AND w.table_group_name = t.tablegroup_name AND t.leader = FALSE AND w.warehouse_name = 'init_warehouse' GROUP BY w.worker_id;
V2.2 默认行为变更(2024年7月)
通过JDBC消费Binlog,Walsender数量配额缩小,从1000 Slot/Worker缩小至600 Slot/Worker,详情请参见通过JDBC消费Hologres Binlog。推荐使用jdbc_fixed模式消费Binlog。相比于jdbc模式,jdbc_fixed模式不占用连接数,不受Walsender数量上限的限制。jdbc_fixed模式详情请参见实时数仓Hologres。
V2.2版本默认行为变更说明(2024年6月)
从Hologres V2.2版本开始,Hologres将升级慢Query日志的采集能力(底层能力,无需用户手动设置),新的慢Query日志将会采集更丰富的信息,以方便业务根据实例的Query情况做更进一步的精细化管理。主要的变更内容如下:
采集更多的失败Query:Query因语法错误、Plan解析失败、权限不足等问题,也会被采集进慢Query日志(V2.2以下版本不采集),建议业务使用SQL诊断对失败Query做进一步治理。
一个事务中如果包含多个DDL语句,例如
BEGIN; DROP TABLE xxx; COMMIT;
,在慢Query日志中将会呈现为一条日志记录,包含完整的Query。但在监控中,“Query QPS”指标采集的是多条DDL。示例如下。--发起一个query,一个事务里包含多个DDL BEGIN; DROP TABLE xxx;--执行成功 CREATE TABLE xxx --执行失败 ROLLBACK;
慢Query日志中的结果:
query_id | status | Query ---------|---------|------------ xxxx | FAILED |begin;drop table ;create table;rollback;
监控中的结果:
Query_QPS指标 :4条记录 Failed_Query_QPS指标:1条记录
V2.2版本默认行为变更说明(2024年5月)
从Hologres V2.2版本开始,
hg_dump_script
返回的建表属性从CALL语法更改为WITH语法,提升了建表的便捷性和可阅读性,详情请参见查看表结构。从Hologres V2.2.7版本开始,慢Query日志记录的INSERT、SELECT、UPDATE、DELETE等SQL语句的最短耗时默认值由1s改为100ms,详情请参见慢Query日志查看与分析。
从Hologres V2.2.9版本开始,Fixed Plan点查(key/value)场景返回结果的排列顺序为乱序,不再和where条件中主键的顺序保持一致。
V2.2版本默认行为变更说明(2024年4月)
从V2.2版本开始,Hologres访问MaxCompute外部表默认采用SLR(服务关联角色)进行鉴权,新购实例或实例升级至V2.2版本均需要授权服务关联角色。服务关联角色是一种可信实体为阿里云服务的RAM角色,旨在解决跨云服务的授权访问问题。通过服务关联角色,可以更好地配置云服务所需权限,避免误操作带来的风险。详情请参见Hologres服务关联角色。
从2.2版本开始,默认的优化器策略由
exhaustive
调整为exhaustive2
,在绝大部分场景下有20%-40%的提升,但在部分left outer join
场景,有可能出现非最优执行计划,引起部分作业内存使用升高,遇到这种情况,可以手动将该作业优化器策略调整回exhaustive,执行set optimizer_join_order = 'exhaustive';
V2.1版本默认行为变更说明(2024年06月)
从Hologres V2.1.27版本、Flink VVR 8.0.7版本开始,使用Flink消费Hologres Binlog将默认由jdbc模式升级为jdbc_fixed模式。相比于jdbc模式,jdbc_fixed模式不占用连接数,且不受walsender数量上限的限制。jdbc_fixed模式详情请参见实时数仓Hologres,jdbc模式详情请参见通过JDBC消费Hologres Binlog。
V2.1版本默认行为变更说明(2024年03月)
Flink消费Hologres Binlog不再支持Holohub模式('sdkMode'='holohub'
),全面转为JDBC模式,新模式任务更稳定,支持的数据类型更丰富。您在升级Hologres实例版本到V2.1前,请选择如下两个方案之一,检查Flink任务与Hologres实例,以保障Flink任务正常运行,详情请参见通过JDBC消费Hologres Binlog。
(方案一)(推荐)将Flink VVR版本升级到8.0.7及以上版本,Flink会自动将Holohub模式切换为JDBC模式。
(方案二)将Flink VVR升级到6.0.7~8.0.5版本,在源表中添加参数
'sdkMode'='jdbc'
之后重新启动作业,同时需要授予用户如下权限选项中的其中之一,确认作业正常运行之后再对Hologres实例进行升级。(选项一)实例的Superuser权限。
(选项二)目标表的Owner权限,CREATE DATABASE权限及实例的Replication Role权限。
(方案三)(不推荐)将Flink VVR版本升级至8.0.6,Flink会自动将Holohub模式切换为JDBC模式。但VVR 8.0.6版本存在已知缺陷,当维表字段过多时可能导致VVR作业上线超时,详情请参见Hologres Connector Release Note。
(可选)如果您的Flink VVR作业数量较多,获取需要升级版本的作业和表信息请参见Holohub模式切换到JDBC模式。
V2.1版本默认行为变更说明(2024年02月)
Hologres实例 V2.1.19版本修正了DECIMAL类型数据乘、除的行为表现。在 V2.1.19以下版本,DECIMAL类型四则运算的小数位数最多支持18位,如果相乘、除之后的小数位大于18位,会在计算过程中提前对数据做截断再计算,导致结果不正确。
如下示例在两个DECIMAL类型数乘法运算中,DECIMAL类型数值的最大总位数(precision_ans
,包括小数点前的位数和小数点后的位数)、小数点后的位数(scale_ans
)计算公式如下:
precision_ans = precision_l + precision_r
scale_ans = scale_l + scale_r
当scale_ans
大于18时,保留18位。 计算时会先将乘数的精度截断到指定位数,按照以下规则进行截断:
如果
scale_l <= 9
,计算时的位数为scale_l
。如果
scale_l > 9
,计算时的位数为max(9,18-scale_r)
。如果
scale_r <= 9
,计算时的位数为scale_r
。如果
scale_r > 9
,计算时的位数为max(9,18-scale_l)
。
使用示例如下:
CREATE TABLE t (a DECIMAL(30,10), b DECIMAL(30,10));
INSERT INTO t VALUES (1.1111111111, 1.0000000000),(1.1111111112, 1.0000000000);
SELECT a, b , a*b FROM t;
在 V2.1.19以下版本,当乘数的有效小数位数大于9时,会先对数据截断到指定位数,精度会有损失,导致计算结果不正确:
-- Hologres结果,不正确 1.1111111111, 1.0000000000,1.111111111000000000 1.1111111112, 1.0000000000,1.111111111000000000 -- PG结果,正确 1.1111111111, 1.0000000000,1.111111111100000000 1.1111111112, 1.0000000000,1.111111111200000000
在 V2.1.19及以上版本,对此行为做了修复,在计算时会先做乘法后对结果取指定精度,避免了提前截断带来的精度损失:
-- 结果正确 1.1111111111, 1.0000000000,1.111111111100000000 1.1111111112, 1.0000000000,1.111111111200000000
V2.1版本默认行为变更说明(2023年10月)
能力优化
Hologres从 V2.1.12版本开始,通过Fixed Plan将数据写入数据类型为Decimal的目标列,如果没有指定精度且待写入数据的精度高于目标列的精度,会对目标列精度的后一位数据进行四舍五入(V2.1.11及以前版本采用去尾法)。示例如下:
说明V2.1.12版本开始,Fixed Plan链路与非Fixed Plan链路行为一致。
CREATE TABLE fixed_plan_decimal (col DECIMAL(3,2)); -- V2.1.12及以上版本写入数据2.56,V2.1.12以下版本写入数据2.55 INSERT INTO fixed_plan_decimal VALUES (2.555); -- 所有版本写入数据均为2.55 INSERT INTO fixed_plan_decimal VALUES (2.554);
Hologres从 V2.1版本开始,支持
create table with property
语法创建表,简化表属性设置,详情请参见CREATE TABLE。Hologres从 V2.1版本开始,修改DELETE、UPDATE后的Compaction策略,及时回收标记的DELETE文件,对于列存表频繁执行DELETE、UPDATE操作的场景,存储空间可能会下降,查询性能可能会有所提升。初次升级V2.1版本,会对历史碎片小文件进行后台批量Compaction,会消耗较多的CPU资源,可能持续十几分钟到几个小时不等(取决于小文件的规模)。
Hologres从 V2.1版本开始,在使用
INSERT INTO <table_name> ON CONFLICT(<col_name>,...) DO
语法时对CONFLICT
中的列增加检查,要求CONFLICT
中的列必须全为主键,若不是全为主键,则SQL执行失败,详情请参见INSERT ON CONFLICT(UPSERT)。Hologres从 V2.1版本开始,访问数据湖外部表无需再手动创建
dlf_fdw
Extension,系统默认创建dlf_fdw
。创建外部服务器(Foreign Server)无需定义dlf_region
参数,仅需定义dlf_endpoint
、oss_endpoint
和dlf_catalog
参数即可。定义dlf_endpoint
和oss_endpoint
时增加格式校验,以避免您填写错误,需满足的格式要求如下:dlf_endpoint :
dlf-share.<naition>-<region>.aliyuncs.com
。oss_endpoint:
OSS Bucket :
oss-<naition>-<region>-internal.aliyuncs.com
。OSS-HDFS Bucket:
oss-<naition>-<region>.oss-dls.aliyuncs.com
。
新增三个非保留关键字:
system_time
、proctime
、dynamic
,即在SQL中不能当作列名称使用,只能作为别名使用,前面不能省略AS
。示例如下:--2.0版本及以下SQL执行成功 SELECT xxxx SYSTEM_TIME FROM t; SELECT xxxx AS SYSTEM_TIME FROM t; --2.1版本及以上,关键词只能当做别名使用 SELECT xxxx AS SYSTEM_TIME FROM t;
V2.0版本默认行为变更说明(2023年6月)
能力优化
Flink消费Hologres Binlog模式升级,全面支持JDBC模式,Holohub模式('sdkMode'='holohub')将会逐步下线。相比于Holohub模式,JDBC模式任务更稳定,支持的数据类型也更丰富。您在升级Hologres实例至V2.0版本前,请选择如下三个方案之一,检查Flink任务与Hologres实例,以保障Flink任务正常运行,详情请参见通过JDBC消费Hologres Binlog。
(方案一)(推荐)将Flink VVR版本升级到8.0.6及以上版本,Flink会自动将Holohub模式切换为JDBC模式,其中VVR 8.0.6版本存在已知缺陷,当维表字段过多时可能导致VVR作业上线超时,详情请参见Hologres Connector Release Note。建议选择VVR 8.0.7版本。
(方案二)将Flink VVR版本升级到8.0.4或8.0.5版本,并重启Flink作业,同时授予用户如下权限选项中的其中之一,确认作业正常运行之后再对Hologres实例进行升级。
(选项一)实例的Superuser权限。
(选项二)目标表的Owner权限,CREATE DATABASE权限,及实例的Replication Role权限。
(方案三)将Flink VVR版本升级到6.0.7到8.0.3版本,Flink会继续使用Holohub模式消费Binlog。
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。
新版Auto Analyze在实例升级后会针对缺少统计信息的表进行统计信息补全,这个过程会持续几分钟到几个小时不等(取决于缺少统计信息的表的数量),过程会消耗一定的CPU资源。
备份恢复能力,分层存储能力,完成Beta阶段,生产可用。
Share级多副本能力,完成Beta阶段,生产可用,详情请参见单实例Shard级多副本。
表属性设置参数规范化:列名含大写时表属性设置语法变更,详情请参见CREATE TABLE。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版本开始,将Decimal转换为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月)
能力优化
从Hologres V1.3.28版本开始,不支持设置Clustering Key、Segment Key的字段为
nullable
,详情请参见聚簇索引Clustering Key、Event Time Column(Segment Key)。从Hologres V1.3.28版本开始,MaxCompute外部表全量自动加载的周期性巡检参数
hg_experimental_load_all_foreign_table_interval_time
由5min
变为30min
,详情请参见外部表自动加载(Auto Load)。从Hologres V1.3.28版本开始,Distribution Key禁止为空,详情请参见分布键Distribution Key。
从Hologres V1.3.27版本开始,主从实例的同步延迟从
20
分钟修改为60
分钟,超过60分钟从实例会自动重启,详情请参见主从实例读写分离部署(共享存储)。
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类型,详情请参见CREATE TABLE。
从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')
关于Resharding的使用请参见Table Group与Shard Count操作指南。
关于Table Group的使用,请参见Table Group设置最佳实践。
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,详情请参见导出至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管理。