本文將記錄Hologres每個版本中的預設行為變更。
參數更名是向下相容的,即低版本的參數名仍可使用,但是更推薦使用新參數名。
V3.0預設行為變更(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
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條件中主鍵的順序保持一致。
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_endpoint
、oss_endpoint
和dlf_catalog
參數即可。定義dlf_endpoint
和oss_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_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年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月)
能力最佳化
從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管理。