全部產品
Search
文件中心

Hologres:預設行為變更說明

更新時間:Nov 20, 2024

本文將會記錄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條件中主鍵的順序保持一致。

    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年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_endpointoss_endpointdlf_catalog參數即可。定義dlf_endpointoss_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_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年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級多副本

  • 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年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 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月)

能力最佳化

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管理