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

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

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

新建实例公网Endpoint默认关闭

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

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

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

Hologres从 V1.1.24版本开始,计算内存取消单节点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
    hg_experimental_auto_check_table_changes_interval hg_auto_check_table_changes_interval 10min
    hg_experimental_auto_check_foreign_table_changes_interval hg_auto_check_foreign_table_changes_interval 4h
    hg_experimental_auto_analyze_max_sample_row_count hg_auto_analyze_max_sample_row_count 16777216
    hg_experimental_fixed_api_modify_max_delay_interval hg_fixed_api_modify_max_delay_interval 3d
    关于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_experimental_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版本开始,优化连接数默认行为,增加Superuer预留连接数,同时也优化HoloWeb连接池逻辑,强保证当连接数超过实例默认规格后,可以通过HoloWeb连接实例进行连接数管控和连接释放。关于连接数的使用请参见连接数管理

  • 修改idle_in_transaction_session_timeout默认参数值

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

  • 同一个事务(Transaction)内不支持数据DML和DDL同时出现
    Hologres只支持对DML语句提供Transaction支持,如果在Transaction里包含了DML语句,会消耗事务资源,引起更多潜在不稳定状态。因此在Hologres V1.1版本中,如果将DML与DDL同时写在一个Transaction里,会有错误提示:insert in ddl transaction is not supported now,如以下SQL语句。
    begin;
    create table abc(id int);
    insert into abc values(1); --报错insert in ddl transaction is not supported now
    commit;
    说明 如果您在事务内DML和DDL已经混用,可以通过如下命令语句修改参数保持数据库级别兼容。
    alter database <db_name> set hg_experimental_enable_dml_in_ddl_transaction_block = on; --db_name为数据库名称