全部產品
Search
文件中心

Hologres:預設行為變更說明

更新時間:Jan 24, 2026

本文將記錄Hologres每個版本中的預設行為變更。

說明

參數更名是向下相容的,即低版本的參數名仍可使用,但是更推薦使用新參數名。

V4.1預設行為變更

2026年01月

  • 安全與合規變更

    • 資料脫敏行為升級(V2 方案):在執行 INSERT 操作時,預設採用底層脫敏方案將源表脫敏資料寫入目標表,規避了因目標表脫敏規則變更可能導致的資料泄露風險。

  • 鏈路與建模約束調整

    • MaxCompute 直讀鏈路切換:預設採用穩定性與相容性更優的 Common Table 鏈路。

    • Segment Key 約束放寬:支援將 Nullable(可為空白)列指定為 Segment Key,提升了資料建模的靈活性。

  • DML與事務強約束

    • 禁止混合事務操作:在明確交易塊內,嚴禁將 INSERT OVERWRITETRUNCATE 與常規 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 specifiederror: 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 = 9

2024年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條件中主鍵的順序保持一致。

    Fixed Plan點查樣本

    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以下版本,查詢結果順序與where條件中id(主鍵)順序一致。
    SELECT * FROM test_t WHERE id IN (1,2,3);
    id | col 
    ----+----- 
    1 | 1 
    2 | 2 
    3 | 3
    
    -- 自hologres V2.2.9起,查詢結果順序與where條件中id(主鍵)順序不保證一致,且多次查詢返回結果的順序也不保證一致。
    SELECT * FROM test_t WHERE id IN (1,2,3);
    id | col 
    ----+----- 
    3 | 3 
    1 | 1 
    2 | 2

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 OVERWRITEBSI函數已完成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);
  • 資料地圖資料血緣傳輸加密,完成Beta階段,生產可用。

  • 變更消費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_fdw Extension,系統預設建立dlf_fdw。建立外部伺服器(Foreign Server)無需定義dlf_region參數,僅需定義dlf_endpointoss_endpointdlf_catalog參數即可。定義dlf_endpointoss_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_timeproctimedynamic,即在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月)

能力最佳化

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')

  • 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