本文將記錄Hologres每個版本中的預設行為變更。
參數更名是向下相容的,即低版本的參數名仍可使用,但是更推薦使用新參數名。
V4.1預設行為變更
2026年01月
安全與合規變更
資料脫敏行為升級(V2 方案):在執行 INSERT 操作時,預設採用底層脫敏方案將源表脫敏資料寫入目標表,規避了因目標表脫敏規則變更可能導致的資料泄露風險。
鏈路與建模約束調整
MaxCompute 直讀鏈路切換:預設採用穩定性與相容性更優的 Common Table 鏈路。
Segment Key 約束放寬:支援將 Nullable(可為空白)列指定為 Segment Key,提升了資料建模的靈活性。
DML與事務強約束
禁止混合事務操作:在明確交易塊內,嚴禁將
INSERT OVERWRITE或TRUNCATE與常規 DML 語句混合使用,違反此規則將觸發報錯。報錯範例如下:ERROR: Mixing INSERT OVERWRITE or TRUNCATE with DML statements in a transaction is not supported.明確交易下 DELETE 效能說明:為了保證事務能力同時降低死結風險,開啟明確交易(設定
set hg_experimental_enable_transaction = on)後,全表DELETE操作將跳過檔案級物理刪除最佳化,轉為逐行邏輯刪除,建議評估相關效能影響。
中繼資料標識
統計資訊最佳化:在
table_info中,Dynamic Table 的類型標識統一變更為DYNAMIC TABLE以便快速定位與管理。
如下功能完成Beta,生產可用:
V4.0預設行為變更
2025年11月
針對建立全文倒排索引後的資料即時寫入情境,在Hologres V4.0.8版本之前,索引會在資料即時寫入時進行同步構建。從V4.0.8版本開始,為了保障資料即時寫入的效率與索引構建的效能,將以1秒為間隔,定時非同步重新整理記憶體中的即時索引,只有在重新整理後,才能通過索引查詢到該資料。
Dynamic Table相關的行為變更:
從Hologres V4.0.7版本開始,當執行個體是計算群組型時,支援computing_resource指定warehouse_name,即指定warehouse執行重新整理。
從Hologres V4.0.7版本開始,預設使用重新整理資源相比與V3.1、V3.2、V4.0.1-4.0.6版本有變更,詳細的重新整理源變更以及使用請見設定Dynamic Table重新整理資源。
自Hologres V4.0.15版本起,為避免用戶端超高頻串連對執行個體穩定性造成影響,計算群組型執行個體單個Gateway的串連數上限已由無限制調整為8000。
2025年09月
從Hologres V4.0開始,新購Hologres執行個體,查詢MaxCompute外部表格預設使用全新的 Common Table鏈路。相比之前的鏈路,效能有極大提升,並且支援MaxCompute Delta Table、Append 2.0 Table等,更多詳情介紹,請參見基於Common Table鏈路訪問MaxCompute。
從Hologres V4.0開始,MaxCompute通過直連方式訪問Hologres預設資料新鮮度為1分鐘。若您需要修改新鮮度,可以使用如下SQL修改。
-- 資料庫層級修改新鮮度
ALTER DATABASE <database_name> set hg_create_table_snapshot_default_freshness_in_sec=xxx;預設開啟參數
hg_serverless_computing_run_compaction_before_commit_bulk_load,即使用Serverless Computing執行資料匯入時,預設同步完成Compaction,減少對本執行個體資源的影響。詳情請參見使用Serverless Computing執行Compaction任務。使用
CREATE EXTERNAL TABLE的模式建立DLF上的表時,表的預設的File Format從ORC改為由 Paimon SDK決定。詳情請參見CREATE EXTERNAL TABLE。在查詢中使用PQE執行的SQL時,已增加單節點記憶體保護。對於可能影響執行個體穩定性的查詢,可能會出現記憶體溢出(OOM)現象,以避免由於工作節點容錯移轉而導致執行個體的不穩定性。
從Hologres V4.0開始,建立全量重新整理模式的Dynamic Table時,會預設以Adaptive Execution方式執行,以降低大任務峰值計算資源,提升全量大任務的執行穩定性。此外,計算資源自動準確推導能力,可降低使用者成本,執行過程動態調整Plan能力,以降低統計資訊誤差導致的Bad Plan的問題。
V3.2預設行為變更(2025年07月)
新增非保留關鍵字Branch、Overwrite、Parameter、Tag,新增保留關鍵字Lambda、Qualify。關鍵字說明詳見文檔。
從Hologres V3.2版本開始,新增CTE運算式自適應最佳化策略。CTE Reuse策略同時受到optimizer_cte_inlining和hg_cte_strategy兩個GUC參數影響。hg_cte_strategy和optimizer_cte_inlining為兩個獨立參數,可以分別設定,與設定順序無關。行為如下:
optimizer_cte_inlining = off時,CTE策略為Reuse(保持不變,不受hg_cte_strategy影響)。optimizer_cte_inlining = on時,不再強制inline,CTE策略由hg_cte_strategy決定。此時:hg_cte_strategy = auto(預設值)時,會根據CTE的複雜度等因素,由最佳化器(Query Optimizer,QO)自動選擇是inline還是Reuse。hg_cte_strategy = inlining時,CTE強制inline。hg_cte_strategy = reuse時,CTE強制Reuse。
V3.1預設行為變更(2025年05月)
Dynamic Table相關的行為變更:
文法變更
從V3.1版本開始,Dynamic Table使用更精簡的新文法,V3.0版本建立的Dynamic Table升級到V3.1版本後,對於全量重新整理的表只能執行ALTER操作,建立表必須使用V3.1新文法;增量重新整理的表需要使用新的文法重新建立,詳情請參見CREATE DYNAMIC TABLE。
資源使用的變更
重新整理資源
在V3.1版本建立的Dynamic Table預設使用Serverless資源,如果本執行個體未開啟Serverless,會自動退化為Local資源。V3.0版本中已建立的表仍將遵循建表時所使用的資源,不會預設進行變更。詳情請參見CREATE DYNAMIC TABLE。
如果建表時使用的是Local資源:
使用3.1版本新文法(3.1版本和3.2版本),對於計算群組型執行個體,使用的Warehouse資源為Base表所在TG的Leader Warehouse以及Dynamic Table表所在TG的Leader Warehouse資源。
使用老版本文法(3.0版本)或者執行個體是4.1版本使用新文法,對於計算群組型執行個體,使用的Warehouse資源為Dynamic Table所在的TG的Leader Warehouse。
串連數的變更
新文法將會使用更加穩定和高效的底層調度能力,每個Dynamic Table將會多一個串連,如果執行個體的串連數使用率較高,且執行個體中Dynamic Table數量比較多(幾百張),建議先適當清理空閑串連。
增量重新整理消費基表方式
從V3.1版本開始,新增Stream模式識別基表資料變更,相比Binlog方式,效能更快,也能節約成本。升級到V3.1版本後都預設使用Stream模式消費,如果您的表在V3.0版本開啟過Binlog,請及時關閉,以避免儲存浪費。詳情請參見Dynamic Table。
查詢隊列Query Queue已完成Beta階段,生產可用。詳情請參見查詢隊列Query Queue。
TRUNCATE語句由DDL變更為DML類型,降低了TRUNCATE操作對於FE節點的壓力。如需保持DDL,需關閉GUC
hg_enable_truncate_as_dml。但對於開啟了Binlog的表執行TRUNCATE操作時,需要Session層級關閉Binlog。詳情請參見TRUNCATE。COPY匯入主鍵表時,GUC
hg_experimental_copy_enable_on_conflict預設開啟,即支援COPY匯入有主鍵表時設定資料更新策略。詳情請參見COPY。使用hg_insert_overwrite功能時,SQL(標準的SELECT語句)指定的列的數量、資料類型均需和
target_table(Hologres內部表)的列嚴格對應,否則會報錯error: table "hg_alias" has x columns available but x columns specified或error: column xx is of type xxx but expression is of type xxx。詳情請參見INSERT OVERWRITE。系統資料表hg_table_storage_status變更,V3.1版本起不計算表在記憶體(Mem Table)中的資料,只計算表的實際儲存,記憶體表原理詳情請參見INSERT。
新增非保留關鍵字async、logical、purge、recover、rebuild、resume、suspend。關鍵字說明詳見文檔。
V3.0預設行為變更
2025年04月
從Hologres V3.0.33版本起,將執行個體的Serverless Computing可用資源量上限由執行個體獨享計算資源的3倍增加至5倍(最大不超過2048 CU)。詳情請參見Serverless Computing使用指南。
2025年02月
從Hologres V3.0.23版本起,沒有許可權的使用者不能查詢Database、Schema和Table的中繼資料。用BI等工具串連Hologres執行個體時,會展示無許可權。
從Hologres V3.0版本起,不支援SQL中包含
LIMIT -1。如果SQL中含有LIMIT -1語句,將會報錯ERROR: LIMIT must not be negative。從Hologres V3.0.19版本起,為了增強資料安全性,對於啟用了資料脫敏功能的Database,預設情況下無法消費Binlog,會出現報錯
Replication does not support hologres anon now, could choose to turn off hg_anon_enable for current user。如需消費Binlog,需要關閉對Binlog消費使用者的資料脫敏設定。具體操作如下:重要當前的檢查僅與以下資料脫敏設定關聯,無法通過設定如
unmasked等脫敏規則使消費生效。-- 為此使用者關閉脫敏 ALTER ROLE "<user>" SET hg_anon_enable = OFF; -- 為此使用者在單個database下關閉脫敏 ALTER ROLE "<user>" IN DATABASE <database> SET hg_anon_enable = OFF;
2024年11月
Fixed Plan過濾條件組合的數量上限為50萬值,超過50萬值則會退化成HQE執行。過濾條件中的值說明如下:
WHERE (pk1 = 1 AND pk2 = 1) OR (pk1 = 2 AND pk2 = 2) OR (pk1 = 3 AND pk2 = 3)--這種情境下組合的數量為3
WHERE pk1 IN (1, 2, 3) AND pk2 IN (1,2,3)--這種情境下組合的數量為3*3 = 92024年09月
SQL Hint,完成Beta階段,生產可用,預設開啟。
COPY在元倉中的記錄由1條變為2條。詳情請參見COPY。
從Hologres V3.0.10版本起,計算群組執行個體每個計算群組的規格上限由512 CU增加至1024 CU。
V2.2 預設行為變更
2025年02月
從Hologres V2.2.38版本起,為了增強資料安全性,對於啟用了資料脫敏功能的Database,預設情況下無法消費Binlog,會出現報錯
Replication does not support hologres anon now, could choose to turn off hg_anon_enable for current user。如需消費Binlog,需要關閉對Binlog消費使用者的資料脫敏設定。具體操作如下:重要當前的檢查僅與以下資料脫敏設定關聯,無法通過設定如
unmasked等脫敏規則使消費生效。-- 為此使用者關閉脫敏 ALTER ROLE "<user>" SET hg_anon_enable = OFF; -- 為此使用者在單個database下關閉脫敏 ALTER ROLE "<user>" IN DATABASE <database> SET hg_anon_enable = OFF;
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下,init_warehouse計算群組的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年07月)
通過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年06月)
從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年05月)
從Hologres V2.2版本開始,
hg_dump_script返回的建表屬性從CALL文法更改為WITH文法,提升了建表的便捷性和可閱讀性,詳情請參見CREATE TABLE。從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年04月)
從V2.2版本開始,Hologres訪問MaxCompute外部表格預設採用SLR(服務關聯角色)進行鑒權,新購執行個體或執行個體升級至V2.2版本均需要授權服務關聯角色。服務關聯角色是一種可信實體為阿里雲服務的RAM角色,旨在解決跨雲端服務的授權訪問問題。通過服務關聯角色,可以更好地配置雲端服務要求的權限,避免誤操作帶來的風險。詳情請參見Hologres服務關聯角色。
從2.2版本開始,預設的最佳化器策略由
exhaustive調整為exhaustive2,在絕大部分情境下有20%-40%的提升,但在部分left outer join情境,有可能出現非最優執行計畫,引起部分作業記憶體使用量升高,遇到這種情況,可以手動將該作業最佳化器策略調整回exhaustive,執行set optimizer_join_order = 'exhaustive';Hologres從V2.2版本開始,Fixed Plan鏈路在慢Query日誌中的Engine Type名稱由SDK更換為FixedQE,與監控指標的FixedQE對齊。
Hologres從V2.2版本開始,單個Frontend節點串連數由128個增加到256個,總串連數也因此增加了一倍。詳情請參見執行個體管理。
INSERT OVERWRITE和BSI函數已完成Beta階段,生產可用。
Hologres從V2.2版本開始,
SELECT hg_dump_script()語句返回的建表屬性由CALL文法變更為WITH文法,有效提升建表便捷性和可閱讀性,詳情請參見CREATE TABLE。
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 Binlog的許可權要求,僅需目標表的讀許可權,詳情見通過JDBC消費Hologres Binlog。
bulkload匯入到Holgores內表,內表在沒有設定distribution key的情況下,有機率出現匯入效能下降。
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_fdwExtension,系統預設建立dlf_fdw。建立外部伺服器(Foreign Server)無需定義dlf_region參數,僅需定義dlf_endpoint、oss_endpoint和dlf_catalog參數即可。定義dlf_endpoint和oss_endpoint時增加格式校正,以避免您填寫錯誤,需滿足的格式要求如下:dlf_endpoint :
dlf-share.<nation>-<region>.aliyuncs.com。oss_endpoint:
OSS Bucket :
oss-<nation>-<region>-internal.aliyuncs.com。OSS-HDFS Bucket:
oss-<nation>-<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年06月)
能力最佳化
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年04月)
能力最佳化
列存不再支援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年06月)
從Hologres V1.3.53版本開始,replica count數必須小於等於Worker個數,詳情請參見單一實例Shard級多副本。
AvgFunction Compute結果最佳化: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年02月)
能力最佳化
從Hologres V1.3.36版本開始,SLPM模型下支援跨Schema建立視圖,詳情請參見在SLPM模式下建立跨Schema的視圖(Beta)。
V1.3版本預設行為變更說明(2023年01月)
能力最佳化
Segment儲存格式的表將在Hologres V2.0開始不再支援,從Hologres V1.3.35版本開始,提供批量將Segment格式的錶轉換為ORC格式表的命令語句,方便存量表的遷移,詳情請參見更改列存表的資料存放區格式。未完成格式轉換的執行個體,將無法升級到更高版本。
從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加密資料。
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相關能力完成公測,進入正式發布。
匯入資料時,寫入方式(包括Data Integration、Flink等)建議從SDK改為SQL(INSERT)。
V1.1版本預設行為變更說明(2022年07月)
為了業務提高對Hologres的自診斷和自營運能力,在2022年7月Hologres新增了若干監控指標,業務能更加精準的定位問題,查看資源使用方式,以提高系統的整體可用性。但需要注意的是:
2022年7月新增的監控指標,僅適用於Hologres V1.1及以上版本,若您Hologres執行個體的版本較低,請您使用常見升級準備失敗報錯或加入HologresDingTalk交流群反饋,詳情請參見如何擷取更多的線上支援?。
CPU和記憶體指標的計算方式將會更加精準,以方便業務能更好地判斷資源使用方式,因此在2022年7月發布新指標後,V1.1版本的Hologres執行個體其CPU和記憶體使用量率將會有部分變化,使用率在5%-10%之間波動均屬正常。CloudMonitor的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。