默認(rèn)行為變更說明
本文將記錄Hologres每個(gè)版本中的默認(rèn)行為變更。
參數(shù)更名是向下兼容的,即低版本的參數(shù)名仍可使用,但是更推薦使用新參數(shù)名。
V3.0默認(rèn)行為變更(2024年11月)
Fixed Plan過濾條件組合的數(shù)量上限為50萬值,超過50萬值則會退化成HQE執(zhí)行。過濾條件中的值說明如下:
WHERE (pk1 = 1 AND pk2 = 1) OR (pk1 = 2 AND pk2 = 2) OR (pk1 = 3 AND pk2 = 3)--這種場景下組合的數(shù)量為3
WHERE pk1 IN (1, 2, 3) AND pk2 IN (1,2,3)--這種場景下組合的數(shù)量為3*3 = 9
V2.2 默認(rèn)行為變更(2024年11月)
從Hologres V2.2.17版本開始,為降低系統(tǒng)OOM風(fēng)險(xiǎn),新增執(zhí)行計(jì)劃可申請內(nèi)存的限制,默認(rèn)為4 GB。如果SQL執(zhí)行過程中遇到報(bào)錯(cuò)
“ORCA failed to produce a plan : Used memory size xxx MB exceeds maximum size 4096 MB”
,則表明已觸發(fā)上述限制,建議對SQL進(jìn)行簡化。如短時(shí)間內(nèi)難以優(yōu)化,可通過如下參數(shù)調(diào)整閾值或取消限制。-- 調(diào)整閾值或取消限制,0為取消限制 ALTER DATABASE <database_name> SET hg_experimental_mp_allocated_size_limit_in_mb = 0;
從Hologres V2.2.25版本開始,對計(jì)算組執(zhí)行縮容時(shí),要求每個(gè)Worker分配的只讀Shard數(shù)不超過128,以避免頻繁發(fā)生OOM等問題。如果縮容后某個(gè)Worker分配的Shard數(shù)超過128,則縮容命令會報(bào)錯(cuò)
“The follower shard count per worker:xx should be less than or equal to the max follower shard”
,此時(shí)計(jì)算組將保持原有規(guī)格。您可以通過如下SQL查詢當(dāng)前數(shù)據(jù)庫下計(jì)算組及其Worker分配的只讀Shard數(shù),若實(shí)例有多個(gè)數(shù)據(jù)庫,則需進(jìn)一步加和。-- 查詢當(dāng)前DB下,某個(gè)計(jì)算組的Worker分配的只讀Shard數(shù) 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 默認(rèn)行為變更(2024年7月)
通過JDBC消費(fèi)Binlog,Walsender數(shù)量配額縮小,從1000 Slot/Worker縮小至600 Slot/Worker,詳情請參見通過JDBC消費(fèi)Hologres Binlog。推薦使用jdbc_fixed模式消費(fèi)Binlog。相比于jdbc模式,jdbc_fixed模式不占用連接數(shù),不受Walsender數(shù)量上限的限制。jdbc_fixed模式詳情請參見實(shí)時(shí)數(shù)倉Hologres。
V2.2版本默認(rèn)行為變更說明(2024年6月)
從Hologres V2.2版本開始,Hologres將升級慢Query日志的采集能力(底層能力,無需用戶手動設(shè)置),新的慢Query日志將會采集更豐富的信息,以方便業(yè)務(wù)根據(jù)實(shí)例的Query情況做更進(jìn)一步的精細(xì)化管理。主要的變更內(nèi)容如下:
采集更多的失敗Query:Query因語法錯(cuò)誤、Plan解析失敗、權(quán)限不足等問題,也會被采集進(jìn)慢Query日志(V2.2以下版本不采集),建議業(yè)務(wù)使用SQL診斷對失敗Query做進(jìn)一步治理。
一個(gè)事務(wù)中如果包含多個(gè)DDL語句,例如
BEGIN; DROP TABLE xxx; COMMIT;
,在慢Query日志中將會呈現(xiàn)為一條日志記錄,包含完整的Query。但在監(jiān)控中,“Query QPS”指標(biāo)采集的是多條DDL。示例如下。--發(fā)起一個(gè)query,一個(gè)事務(wù)里包含多個(gè)DDL BEGIN; DROP TABLE xxx;--執(zhí)行成功 CREATE TABLE xxx --執(zhí)行失敗 ROLLBACK;
慢Query日志中的結(jié)果:
query_id | status | Query ---------|---------|------------ xxxx | FAILED |begin;drop table ;create table;rollback;
監(jiān)控中的結(jié)果:
Query_QPS指標(biāo) :4條記錄 Failed_Query_QPS指標(biāo):1條記錄
V2.2版本默認(rèn)行為變更說明(2024年5月)
從Hologres V2.2版本開始,
hg_dump_script
返回的建表屬性從CALL語法更改為WITH語法,提升了建表的便捷性和可閱讀性,詳情請參見查看表結(jié)構(gòu)。從Hologres V2.2.7版本開始,慢Query日志記錄的INSERT、SELECT、UPDATE、DELETE等SQL語句的最短耗時(shí)默認(rèn)值由1s改為100ms,詳情請參見慢Query日志查看與分析。
從Hologres V2.2.9版本開始,Fixed Plan點(diǎn)查(key/value)場景返回結(jié)果的排列順序?yàn)閬y序,不再和where條件中主鍵的順序保持一致。
CREATE TABLE test_t (id INT PRIMARY key, col INT); INSERT INTO test_t VALUES (1,1),(2,2),(3,3); -- hologres V2.2.9以下版本,查詢結(jié)果順序與where條件中id(主鍵)順序一致。 SELECT * FROM test_t WHERE id IN (1,2,3); id | col ----+----- 1 | 1 2 | 2 3 | 3 -- 自hologres V2.2.9起,查詢結(jié)果順序與where條件中id(主鍵)順序不保證一致,且多次查詢返回結(jié)果的順序也不保證一致。 SELECT * FROM test_t WHERE id IN (1,2,3); id | col ----+----- 3 | 3 1 | 1 2 | 2
V2.2版本默認(rèn)行為變更說明(2024年4月)
從V2.2版本開始,Hologres訪問MaxCompute外部表默認(rèn)采用SLR(服務(wù)關(guān)聯(lián)角色)進(jìn)行鑒權(quán),新購實(shí)例或?qū)嵗壷罺2.2版本均需要授權(quán)服務(wù)關(guān)聯(lián)角色。服務(wù)關(guān)聯(lián)角色是一種可信實(shí)體為阿里云服務(wù)的RAM角色,旨在解決跨云服務(wù)的授權(quán)訪問問題。通過服務(wù)關(guān)聯(lián)角色,可以更好地配置云服務(wù)所需權(quán)限,避免誤操作帶來的風(fēng)險(xiǎn)。詳情請參見Hologres服務(wù)關(guān)聯(lián)角色。
從2.2版本開始,默認(rèn)的優(yōu)化器策略由
exhaustive
調(diào)整為exhaustive2
,在絕大部分場景下有20%-40%的提升,但在部分left outer join
場景,有可能出現(xiàn)非最優(yōu)執(zhí)行計(jì)劃,引起部分作業(yè)內(nèi)存使用升高,遇到這種情況,可以手動將該作業(yè)優(yōu)化器策略調(diào)整回exhaustive,執(zhí)行set optimizer_join_order = 'exhaustive';
V2.1版本默認(rèn)行為變更說明(2024年06月)
從Hologres V2.1.27版本、Flink VVR 8.0.7版本開始,使用Flink消費(fèi)Hologres Binlog將默認(rèn)由jdbc模式升級為jdbc_fixed模式。相比于jdbc模式,jdbc_fixed模式不占用連接數(shù),且不受walsender數(shù)量上限的限制。jdbc_fixed模式詳情請參見實(shí)時(shí)數(shù)倉Hologres,jdbc模式詳情請參見通過JDBC消費(fèi)Hologres Binlog。
V2.1版本默認(rèn)行為變更說明(2024年03月)
Flink消費(fèi)Hologres Binlog不再支持Holohub模式('sdkMode'='holohub'
),全面轉(zhuǎn)為JDBC模式,新模式任務(wù)更穩(wěn)定,支持的數(shù)據(jù)類型更豐富。您在升級Hologres實(shí)例版本到V2.1前,請選擇如下兩個(gè)方案之一,檢查Flink任務(wù)與Hologres實(shí)例,以保障Flink任務(wù)正常運(yùn)行,詳情請參見通過JDBC消費(fèi)Hologres Binlog。
(方案一)(推薦)將Flink VVR版本升級到8.0.7及以上版本,F(xiàn)link會自動將Holohub模式切換為JDBC模式。
(方案二)將Flink VVR升級到6.0.7~8.0.5版本,在源表中添加參數(shù)
'sdkMode'='jdbc'
之后重新啟動作業(yè),同時(shí)需要授予用戶如下權(quán)限選項(xiàng)中的其中之一,確認(rèn)作業(yè)正常運(yùn)行之后再對Hologres實(shí)例進(jìn)行升級。(選項(xiàng)一)實(shí)例的Superuser權(quán)限。
(選項(xiàng)二)目標(biāo)表的Owner權(quán)限,CREATE DATABASE權(quán)限及實(shí)例的Replication Role權(quán)限。
(方案三)(不推薦)將Flink VVR版本升級至8.0.6,F(xiàn)link會自動將Holohub模式切換為JDBC模式。但VVR 8.0.6版本存在已知缺陷,當(dāng)維表字段過多時(shí)可能導(dǎo)致VVR作業(yè)上線超時(shí),詳情請參見Hologres Connector Release Note。
(可選)如果您的Flink VVR作業(yè)數(shù)量較多,獲取需要升級版本的作業(yè)和表信息請參見Holohub模式切換到JDBC模式。
V2.1版本默認(rèn)行為變更說明(2024年02月)
Hologres實(shí)例 V2.1.19版本修正了DECIMAL類型數(shù)據(jù)乘、除的行為表現(xiàn)。在 V2.1.19以下版本,DECIMAL類型四則運(yùn)算的小數(shù)位數(shù)最多支持18位,如果相乘、除之后的小數(shù)位大于18位,會在計(jì)算過程中提前對數(shù)據(jù)做截?cái)嘣儆?jì)算,導(dǎo)致結(jié)果不正確。
如下示例在兩個(gè)DECIMAL類型數(shù)乘法運(yùn)算中,DECIMAL類型數(shù)值的最大總位數(shù)(precision_ans
,包括小數(shù)點(diǎn)前的位數(shù)和小數(shù)點(diǎn)后的位數(shù))、小數(shù)點(diǎn)后的位數(shù)(scale_ans
)計(jì)算公式如下:
precision_ans = precision_l + precision_r
scale_ans = scale_l + scale_r
當(dāng)scale_ans
大于18時(shí),保留18位。 計(jì)算時(shí)會先將乘數(shù)的精度截?cái)嗟街付ㄎ粩?shù),按照以下規(guī)則進(jìn)行截?cái)啵?/p>
如果
scale_l <= 9
,計(jì)算時(shí)的位數(shù)為scale_l
。如果
scale_l > 9
,計(jì)算時(shí)的位數(shù)為max(9,18-scale_r)
。如果
scale_r <= 9
,計(jì)算時(shí)的位數(shù)為scale_r
。如果
scale_r > 9
,計(jì)算時(shí)的位數(shù)為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以下版本,當(dāng)乘數(shù)的有效小數(shù)位數(shù)大于9時(shí),會先對數(shù)據(jù)截?cái)嗟街付ㄎ粩?shù),精度會有損失,導(dǎo)致計(jì)算結(jié)果不正確:
-- Hologres結(jié)果,不正確 1.1111111111, 1.0000000000,1.111111111000000000 1.1111111112, 1.0000000000,1.111111111000000000 -- PG結(jié)果,正確 1.1111111111, 1.0000000000,1.111111111100000000 1.1111111112, 1.0000000000,1.111111111200000000
在 V2.1.19及以上版本,對此行為做了修復(fù),在計(jì)算時(shí)會先做乘法后對結(jié)果取指定精度,避免了提前截?cái)鄮淼木葥p失:
-- 結(jié)果正確 1.1111111111, 1.0000000000,1.111111111100000000 1.1111111112, 1.0000000000,1.111111111200000000
V2.1版本默認(rèn)行為變更說明(2023年10月)
能力優(yōu)化
Hologres從 V2.1.12版本開始,通過Fixed Plan將數(shù)據(jù)寫入數(shù)據(jù)類型為Decimal的目標(biāo)列,如果沒有指定精度且待寫入數(shù)據(jù)的精度高于目標(biāo)列的精度,會對目標(biāo)列精度的后一位數(shù)據(jù)進(jìn)行四舍五入(V2.1.11及以前版本采用去尾法)。示例如下:
說明V2.1.12版本開始,F(xiàn)ixed Plan鏈路與非Fixed Plan鏈路行為一致。
CREATE TABLE fixed_plan_decimal (col DECIMAL(3,2)); -- V2.1.12及以上版本寫入數(shù)據(jù)2.56,V2.1.12以下版本寫入數(shù)據(jù)2.55 INSERT INTO fixed_plan_decimal VALUES (2.555); -- 所有版本寫入數(shù)據(jù)均為2.55 INSERT INTO fixed_plan_decimal VALUES (2.554);
Hologres從 V2.1版本開始,支持
create table with property
語法創(chuàng)建表,簡化表屬性設(shè)置,詳情請參見CREATE TABLE。Hologres從 V2.1版本開始,修改DELETE、UPDATE后的Compaction策略,及時(shí)回收標(biāo)記的DELETE文件,對于列存表頻繁執(zhí)行DELETE、UPDATE操作的場景,存儲空間可能會下降,查詢性能可能會有所提升。初次升級V2.1版本,會對歷史碎片小文件進(jìn)行后臺批量Compaction,會消耗較多的CPU資源,可能持續(xù)十幾分鐘到幾個(gè)小時(shí)不等(取決于小文件的規(guī)模)。
Hologres從 V2.1版本開始,在使用
INSERT INTO <table_name> ON CONFLICT(<col_name>,...) DO
語法時(shí)對CONFLICT
中的列增加檢查,要求CONFLICT
中的列必須全為主鍵,若不是全為主鍵,則SQL執(zhí)行失敗,詳情請參見INSERT ON CONFLICT(UPSERT)。Hologres從 V2.1版本開始,訪問數(shù)據(jù)湖外部表無需再手動創(chuàng)建
dlf_fdw
Extension,系統(tǒng)默認(rèn)創(chuàng)建dlf_fdw
。創(chuàng)建外部服務(wù)器(Foreign Server)無需定義dlf_region
參數(shù),僅需定義dlf_endpoint
、oss_endpoint
和dlf_catalog
參數(shù)即可。定義dlf_endpoint
和oss_endpoint
時(shí)增加格式校驗(yàn),以避免您填寫錯(cuò)誤,需滿足的格式要求如下: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
。
新增三個(gè)非保留關(guān)鍵字:
system_time
、proctime
、dynamic
,即在SQL中不能當(dāng)作列名稱使用,只能作為別名使用,前面不能省略AS
。示例如下:--2.0版本及以下SQL執(zhí)行成功 SELECT xxxx SYSTEM_TIME FROM t; SELECT xxxx AS SYSTEM_TIME FROM t; --2.1版本及以上,關(guān)鍵詞只能當(dāng)做別名使用 SELECT xxxx AS SYSTEM_TIME FROM t;
V2.0版本默認(rèn)行為變更說明(2023年6月)
能力優(yōu)化
Flink消費(fèi)Hologres Binlog模式升級,全面支持JDBC模式,Holohub模式('sdkMode'='holohub')將會逐步下線。相比于Holohub模式,JDBC模式任務(wù)更穩(wěn)定,支持的數(shù)據(jù)類型也更豐富。您在升級Hologres實(shí)例至V2.0版本前,請選擇如下三個(gè)方案之一,檢查Flink任務(wù)與Hologres實(shí)例,以保障Flink任務(wù)正常運(yùn)行,詳情請參見通過JDBC消費(fèi)Hologres Binlog。
(方案一)(推薦)將Flink VVR版本升級到8.0.6及以上版本,F(xiàn)link會自動將Holohub模式切換為JDBC模式,其中VVR 8.0.6版本存在已知缺陷,當(dāng)維表字段過多時(shí)可能導(dǎo)致VVR作業(yè)上線超時(shí),詳情請參見Hologres Connector Release Note。建議選擇VVR 8.0.7版本。
(方案二)將Flink VVR版本升級到8.0.4或8.0.5版本,并重啟Flink作業(yè),同時(shí)授予用戶如下權(quán)限選項(xiàng)中的其中之一,確認(rèn)作業(yè)正常運(yùn)行之后再對Hologres實(shí)例進(jìn)行升級。
(選項(xiàng)一)實(shí)例的Superuser權(quán)限。
(選項(xiàng)二)目標(biāo)表的Owner權(quán)限,CREATE DATABASE權(quán)限,及實(shí)例的Replication Role權(quán)限。
(方案三)將Flink VVR版本升級到6.0.7到8.0.3版本,F(xiàn)link會繼續(xù)使用Holohub模式消費(fèi)Binlog。
Flink維表和結(jié)果表不再支持RPC模式(
'sdkMode'='rpc'
或'rpcMode'='true'
),全面轉(zhuǎn)為JDBC模式。您在升級Hologres實(shí)例版本到V2.0版本前,請按下列步驟檢查Flink任務(wù)與Hologres實(shí)例,以保證Flink任務(wù)正常進(jìn)行,詳情請參見實(shí)時(shí)數(shù)倉Hologres。如果您的Flink VVR為6.0.7及以上版本,系統(tǒng)會自動將RPC模式切換為JDBC模式。
如果您的Flink VVR為6.0.3~6.0.6版本,您需要將Flink作業(yè)中的
'sdkMode'='rpc'
參數(shù)改為'sdkMode'='jdbc'
或者將'rpcMode'='true'
參數(shù)改為'rpcMode'='false'
。如果您的Flink VVR為6.0.2及以下版本,您需要將Flink作業(yè)中的
'rpcMode'='true'
參數(shù)改為'rpcMode'='false'
。如果您的實(shí)例連接數(shù)不足,推薦配置
connectionPoolName
參數(shù)以共享連接池,或?qū)link VVR版本升級到6.0.7及以上版本并使用'sdkMode'='jdbc_fixed'
模式,該模式不占用連接數(shù)。原RPC模式不會對同一批次中相同主鍵的數(shù)據(jù)做去重,切換為JDBC模式會自動去重,如果業(yè)務(wù)場景需要保留完整的數(shù)據(jù),可以通過設(shè)置
'jdbcWriteBatchSize'='1'
防止去重。
Hologres實(shí)例從V2.0版本起,不再支持通過Blink實(shí)時(shí)點(diǎn)查和寫入Hologres。建議您先將Blink作業(yè)遷移至Flink,而后進(jìn)行Hologres的版本升級。
V2.0版本默認(rèn)行為變更說明(2023年4月)
能力優(yōu)化
列存不再支持Segment存儲格式,有Segment格式的實(shí)例暫不支持升級到V2.0及以上版本,可以通過工具函數(shù)hg_convert_segment_orc完成批量格式轉(zhuǎn)換,詳情請參見更改列存表的數(shù)據(jù)存儲格式。
為避免誤用Table Group造成資源浪費(fèi),從V2.0開始限制單Table Group及實(shí)例級別總Shard數(shù)上限,詳情請參見Table Group與Shard Count操作指南。
DataHub寫入不再支持SDK(遺留)模式,全面轉(zhuǎn)為JDBC模式,新模式更穩(wěn)定,支持?jǐn)?shù)據(jù)類型更豐富。
默認(rèn)裝載Binlog擴(kuò)展,JDBC消費(fèi)時(shí),無需手動創(chuàng)建相關(guān)擴(kuò)展。通過JDBC消費(fèi)Binlog,WAL Sender數(shù)量配額默認(rèn)增加10倍,從200 Slot/32C擴(kuò)大至2000 Slot/32C,詳情請參見通過JDBC消費(fèi)Hologres Binlog。
新版Auto Analyze在實(shí)例升級后會針對缺少統(tǒng)計(jì)信息的表進(jìn)行統(tǒng)計(jì)信息補(bǔ)全,這個(gè)過程會持續(xù)幾分鐘到幾個(gè)小時(shí)不等(取決于缺少統(tǒng)計(jì)信息的表的數(shù)量),過程會消耗一定的CPU資源。
備份恢復(fù)能力,分層存儲能力,完成Beta階段,生產(chǎn)可用。
Share級多副本能力,完成Beta階段,生產(chǎn)可用,詳情請參見單實(shí)例Shard級多副本。
表屬性設(shè)置參數(shù)規(guī)范化:列名含大寫時(shí)表屬性設(shè)置語法變更,詳情請參見CREATE TABLE。bitmap_columns屬性禁止設(shè)為auto。該變更不影響已有表的正常使用。
HG_CREATE_TABLE_LIKE函數(shù)支持繼承Create Index索引,繼承Serial類型的列,繼承Proxima向量列。
V1.3版本默認(rèn)行為變更說明(2023年6月)
從Hologres V1.3.53版本開始,replica count數(shù)必須小于等于Worker個(gè)數(shù),詳情請參見單實(shí)例Shard級多副本。
Avg函數(shù)計(jì)算結(jié)果優(yōu)化:Hologres從 V1.3版本開始,優(yōu)化Avg函數(shù)的實(shí)現(xiàn),完整保留計(jì)算結(jié)果(V1.3以下版本默認(rèn)只保留6位,結(jié)果超過6位就截?cái)啵?/p>
Decimal類型轉(zhuǎn)換為Text類型結(jié)果優(yōu)化:Hologres從 V1.3.46版本開始,將Decimal轉(zhuǎn)換為Text類型后,結(jié)果為原生結(jié)果(V1.3.46以前版本的結(jié)果展示為科學(xué)計(jì)數(shù)法)。示例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及以上版本的結(jié)果: a | b |b --+-------------+------ 1 |0.0000000000 |0.0000000000 1 |1.0000000000 |1.0000000000 --1.3.46以前版本的結(jié)果: a | b |b --+-------------+------ 1 |0.0000000000 |0.E-10 1 |1.0000000000 |1.0000000000
V1.3版本默認(rèn)行為變更說明(2023年2月)
能力優(yōu)化
從Hologres V1.3.36版本開始,SLPM模型下支持跨Schema創(chuàng)建視圖,詳情請參見在SLPM模式下創(chuàng)建跨Schema的視圖(Beta)。
V1.3版本默認(rèn)行為變更說明(2023年1月)
能力優(yōu)化
Segment存儲格式的表將在Hologres V2.0開始不再支持,從Hologres V1.3.35版本開始,提供批量將Segment格式的表轉(zhuǎn)換為ORC格式表的命令語句,方便存量表的遷移,詳情請參見Hologres Segment格式下線通知、更改列存表的數(shù)據(jù)存儲格式。未完成格式轉(zhuǎn)換的實(shí)例,將無法升級到更高版本。
從Hologres V1.3.35版本開始,F(xiàn)ixed Plan場景支持更多GUC參數(shù)值默認(rèn)為
on
,從而提升易用性和性能,詳情請參見Fixed Plan加速SQL執(zhí)行。
V1.3版本默認(rèn)行為變更說明(2022年12月)
能力優(yōu)化
從2022年12月26日起,新購實(shí)例(包含使用備份恢復(fù)的新實(shí)例)不再提供VPC 類型的域名(VPC Endpoint),使用更加安全的指定VPC類型的域名(指定VPC Endpoint)代替。指定VPC Endpoint僅與您購買實(shí)例時(shí)選擇的VPC網(wǎng)絡(luò)聯(lián)通,提供更好的安全性和隔離性。已有實(shí)例不受影響,建議您關(guān)閉原有VPC Endpoint,同時(shí)改為指定VPC Endpoint。
從Hologres V1.3.31版本開始,默認(rèn)開啟查詢MaxCompute加密數(shù)據(jù)和Hologres數(shù)據(jù)存儲加密的配置,開箱即可用,無需額外工單,詳情請參見數(shù)據(jù)存儲加密、查詢MaxCompute加密數(shù)據(jù)(BYOK模式)。
V1.3版本默認(rèn)行為變更說明(2022年11月)
能力優(yōu)化
從Hologres V1.3.28版本開始,不支持設(shè)置Clustering Key、Segment Key的字段為
nullable
,詳情請參見聚簇索引Clustering Key、Event Time Column(Segment Key)。從Hologres V1.3.28版本開始,MaxCompute外部表全量自動加載的周期性巡檢參數(shù)
hg_experimental_load_all_foreign_table_interval_time
由5min
變?yōu)?span data-tag="ph" id="codeph-06f-5sw-nrt" class="ph">30min
,詳情請參見外部表自動加載(Auto Load)。從Hologres V1.3.28版本開始,Distribution Key禁止為空,詳情請參見分布鍵Distribution Key。
從Hologres V1.3.27版本開始,主從實(shí)例的同步延遲從
20
分鐘修改為60
分鐘,超過60分鐘從實(shí)例會自動重啟,詳情請參見主從實(shí)例讀寫分離部署(共享存儲)。
V1.3版本默認(rèn)行為變更說明(2022年10月)
能力優(yōu)化
從Hologres V1.3.24版本開始,新增hg_worker_info系統(tǒng)視圖,查詢計(jì)算節(jié)點(diǎn)Worker與Shard之間的關(guān)系,幫助解決計(jì)算資源傾斜問題,詳情請參見查看Worker傾斜關(guān)系。
從1.3.24版本開始,Hologres TTL設(shè)置的最小值1天,即86400秒,詳情使用見SQL命令列表。
從Hologres V1.3.24版本開始,如果開啟了Hologres Binlog,
pg_relation_size
函數(shù)的查詢結(jié)果將會包含Binlog的存儲量,詳情請參見查看表和DB的存儲大小。從Hologres V1.3.24版本開始,支持按需修改分區(qū)子表的Binlog TTL,詳情請參見訂閱Hologres Binlog。
V1.3版本默認(rèn)行為變更說明(2022年09月)
能力優(yōu)化
從Hologres V1.3.23版本開始,支持通過SQL命令解決因TTL過期主鍵(PK)重復(fù)而導(dǎo)致導(dǎo)入失敗的問題,詳情請參見INSERT ON CONFLICT(UPSERT)。
從Hologres V1.3.22版本開始,支持PG系統(tǒng)表與用戶創(chuàng)建的Hologres表相互Join,以及將PG系統(tǒng)表數(shù)據(jù)導(dǎo)出至Hologres表,詳情請參見系統(tǒng)表。
從Hologres V1.3.22版本開始,支持主鍵、分區(qū)鍵類型為Date類型,詳情請參見CREATE TABLE。
從Hologres V1.3.21版本開始,支持
Create Table As
語法,支持復(fù)制表結(jié)構(gòu)的同時(shí)復(fù)制數(shù)據(jù),詳情請參見CREATE TABLE AS。
V1.3版本默認(rèn)行為變更說明(2022年07月)
能力優(yōu)化
JSON相關(guān)能力完成公測,進(jìn)入正式發(fā)布。
PostGIS相關(guān)能力完成公測,進(jìn)入正式發(fā)布。
導(dǎo)入數(shù)據(jù)時(shí),寫入方式(包括數(shù)據(jù)集成、Flink等)建議從SDK改為SQL(INSERT)。
V1.1版本默認(rèn)行為變更說明(2022年07月)
為了業(yè)務(wù)提高對Hologres的自診斷和自運(yùn)維能力,在2022年7月Hologres新增了若干監(jiān)控指標(biāo),業(yè)務(wù)能更加精準(zhǔn)的定位問題,查看資源使用情況,以提高系統(tǒng)的整體可用性。但需要注意的是:
2022年7月新增的監(jiān)控指標(biāo),僅適用于Hologres V1.1及以上版本,若您Hologres實(shí)例的版本較低,請您使用自助升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?。
CPU和內(nèi)存指標(biāo)的計(jì)算方式將會更加精準(zhǔn),以方便業(yè)務(wù)能更好地判斷資源使用情況,因此在2022年7月發(fā)布新指標(biāo)后,V1.1版本的Hologres實(shí)例其CPU和內(nèi)存使用率將會有部分變化,使用率在5%-10%之間波動均屬正常。云監(jiān)控的CPU和內(nèi)存使用率也同步變更,請及時(shí)關(guān)注云監(jiān)控的告警信息,并重新設(shè)置合理的監(jiān)控閾值。
監(jiān)控指標(biāo)詳情請參見Hologres管控臺的監(jiān)控指標(biāo)。
V1.1版本默認(rèn)行為變更說明(2022年04月)
內(nèi)存優(yōu)化
Hologres從 V1.1.53版本開始,針對內(nèi)存進(jìn)行優(yōu)化,優(yōu)化后端運(yùn)維指標(biāo)的匯報(bào),相比之前版本常駐內(nèi)存更少,從而提高計(jì)算使用內(nèi)存。若有需要可以升級至Hologres V1.1.53版本。
V1.1版本默認(rèn)行為變更說明(2022年03月)
Fixed Plan點(diǎn)查場景優(yōu)化
Hologres從 V1.1.49版本開始,針對Fixed Plan點(diǎn)查場景進(jìn)行了優(yōu)化,在大規(guī)模點(diǎn)查的情況下提升了30%以上的吞吐。若有需要請升級Hologres實(shí)例至 V1.1.49及以上版本,F(xiàn)ixed Plan使用詳情請參見Fixed Plan加速SQL執(zhí)行。
V1.1版本默認(rèn)行為變更說明(2022年03月)
分區(qū)子表綁定父表進(jìn)行屬性檢測
Hologres從 V1.1.42版本開始,對分區(qū)子表綁定(ATTACH)父表時(shí),將會進(jìn)行更嚴(yán)格的屬性檢測,包括主鍵(PK)、索引、非空約束等,如果子表的屬性與父表不一致,則會報(bào)錯(cuò)無法綁定。請?jiān)诮ū砬按_保分區(qū)子表的屬性與父表一致,關(guān)于分區(qū)子表和父表的約束請參見CREATE PARTITION TABLE。
典型場景示例如下,子表的Clustering Key和父表的Clustering Key不一致,會報(bào)錯(cuò)無法綁定。
--假設(shè)已有父表和其子表,其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;
-- 創(chuàng)建臨時(shí)分區(qū)子表
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;
--導(dǎo)入外表數(shù)據(jù)至臨時(shí)分區(qū)子表
INSERT INTO public.tmp_hologres_child SELECT * FROM foreign_table WHERE ds='20201103';
-- 刪除原分區(qū)子表,并將臨時(shí)分區(qū)子表綁定至父表上
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 ;
-- 錯(cuò)誤原因
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版本默認(rèn)行為變更說明(2021年12月)
新建實(shí)例公網(wǎng)Endpoint默認(rèn)關(guān)閉
出于數(shù)據(jù)訪問控制的安全要求,自2021年12月7日00:00:00起,新建實(shí)例的公網(wǎng)Endpoint默認(rèn)關(guān)閉,默認(rèn)不提供公網(wǎng)訪問能力。如果您需要使用公網(wǎng)Endpoint連接Hologres,請?jiān)?a id="xref-uwf-y7u-5qg" class="" target="_blank">Hologres管理控制臺手動打開。
V1.1版本默認(rèn)行為變更說明(2021年11月)
單節(jié)點(diǎn)計(jì)算內(nèi)存上限取消20GB限制
Hologres從 V1.1.24版本開始,計(jì)算節(jié)點(diǎn)(Worker Node)運(yùn)行時(shí)內(nèi)存取消單節(jié)點(diǎn)20GB限制,采用動態(tài)調(diào)整節(jié)點(diǎn)內(nèi)存。計(jì)算節(jié)點(diǎn)定期檢查當(dāng)前內(nèi)存水位,從而動態(tài)分配計(jì)算節(jié)點(diǎn)的內(nèi)存上限,盡量保證運(yùn)行時(shí)內(nèi)存最大化分配,保障Query獲得足夠內(nèi)存分配。Hologres升級到V1.1.24及以上版本后,若是執(zhí)行Query時(shí)還報(bào)錯(cuò)超內(nèi)存限制,在執(zhí)行計(jì)劃合理的前提下,說明內(nèi)存已用到了上限,需要優(yōu)化SQL或者擴(kuò)容實(shí)例。
一個(gè)實(shí)例后端由多個(gè)節(jié)點(diǎn)組成,不同實(shí)例規(guī)格對應(yīng)不同節(jié)點(diǎn)數(shù),單個(gè)節(jié)點(diǎn)的總內(nèi)存為64GB。內(nèi)存會分為三部分,三分之一分配給計(jì)算運(yùn)行時(shí)分配,三分之一分配給緩存,三分之一分配給元數(shù)據(jù)及常駐執(zhí)行進(jìn)程。
V1.1版本默認(rèn)行為變更說明(2021年10月)
Auto Analyze默認(rèn)打開
Auto Analyze在Hologres V0.10版本透出,經(jīng)過多用戶線上驗(yàn)證,具備生產(chǎn)可用狀態(tài),因此在Hologres V1.1版本中默認(rèn)行為由關(guān)閉改為打開。升級實(shí)例不受影響,新創(chuàng)建實(shí)例默認(rèn)為打開,同時(shí)相關(guān)參數(shù)名調(diào)整如下。
原參數(shù)名
新參數(shù)名
默認(rèn)值
hg_experimental_enable_start_auto_analyze_worker
hg_enable_start_auto_analyze_worker
on
關(guān)于Auto Analyze的使用請參見ANALYZE和AUTO ANALYZE。
Table Group相關(guān)函數(shù)更名
Resharding函數(shù)在Hologres V0.10版本透出,經(jīng)過多用戶線上驗(yàn)證,具備生產(chǎn)可用狀態(tài),在Hologres V1.1版本中相關(guān)函數(shù)名稱調(diào)整如下。
原函數(shù)名
新函數(shù)名
hg_update_table_shard_count('table_name','table_group_name')
hg_move_table_to_table_group('table_name','table_group_name')
關(guān)于Resharding的使用請參見Table Group與Shard Count操作指南。
關(guān)于Table Group的使用,請參見Table Group設(shè)置最佳實(shí)踐。
MaxCompute外表訪問行為變更
在Hologres V0.10版本中,Hologres具備了全新的MaxCompute外表加速查詢引擎,帶來30%以上的性能提升,經(jīng)過多用戶線上驗(yàn)證,具備生產(chǎn)可用狀態(tài),因此新版本使用新的查詢引擎查詢MaxCompute外表。升級用戶不受影響,新創(chuàng)建實(shí)例默認(rèn)使用全新外表引擎。同時(shí)相關(guān)參數(shù)名調(diào)整如下。
原參數(shù)名
新參數(shù)名
備注
hg_experimental_enable_access_odps_orc_via_holo
hg_enable_access_odps_orc_via_holo
默認(rèn)值為on。
hg_experimental_foreign_table_executor_max_dop
hg_foreign_table_executor_max_dop
默認(rèn)值調(diào)整為與實(shí)例Core數(shù)相同,最大為128。
無
hg_foreign_table_executor_dml_max_dop
V1.1版本新增,默認(rèn)為32,針對涉及有外表的DML SQL生效。
hg_experimental_foreign_table_split_size
hg_foreign_table_split_size
默認(rèn)值為64MB。
hg_experimental_foreign_table_max_partition_limit
hg_foreign_table_max_partition_limit
默認(rèn)為512,即一次Query查詢掃描最大分區(qū)為512。
hg_experimental_enable_write_maxcompute
無
V1.1版本默認(rèn)為on,即默認(rèn)可回寫至MaxCompute,詳情請參見導(dǎo)出至MaxCompute。
有關(guān)參數(shù)的含義,請參見優(yōu)化MaxCompute外部表的查詢性能。
pg_stat_activity表支持全局狀態(tài)
在Hologres V1.1之前版本中,pg_stat_activity表只記錄單個(gè)接入節(jié)點(diǎn)(FE)的活躍連接狀態(tài),對于活躍查詢的檢查和處理并不方便,在1.1版本中,pg_stat_activity包含了全部接入節(jié)點(diǎn)的狀態(tài),有關(guān)pg_stat_activity活躍查詢的管理,請參見Query管理。
連接數(shù)默認(rèn)行為更改
從Hologres V1.1版本開始,優(yōu)化連接數(shù)默認(rèn)行為,增加Superuser預(yù)留連接數(shù),同時(shí)也優(yōu)化HoloWeb連接池邏輯,強(qiáng)保證當(dāng)連接數(shù)超過實(shí)例默認(rèn)規(guī)格后,可以通過HoloWeb連接實(shí)例進(jìn)行連接數(shù)管控和連接釋放。關(guān)于連接數(shù)的使用請參見連接數(shù)管理。
修改idle_in_transaction_session_timeout默認(rèn)參數(shù)值
參數(shù)
idle_in_transaction_session_timeout
描述了事務(wù)進(jìn)入idle狀態(tài)后的超時(shí)行為,如果不設(shè)置參數(shù)值,默認(rèn)不會做事務(wù)超時(shí)的釋放,容易發(fā)生查詢被鎖死的情況。在Hologres V1.1版本中,idle_in_transaction_session_timeout
值默認(rèn)設(shè)置為10分鐘。關(guān)于參數(shù)的使用,請參見Query管理。