本文將會為您介紹Hologres的Dynamic Table重新整理資源。
文法說明
在Hologres中,Dynamic Table的重新整理資源可以通過computing_resource參數指定,設定該參數時需要根據Hologres版本確定具體的設定文法。
參數說明
參數名稱 | 是否必填 | 參數說明 | 參數樣本 |
computing_resource | 否 | Dynamic Table重新整理資源類型:
| 設定資源類型為serverless: |
SQL文法
此處設定Dynamic Table重新整理資源SQL文法基於Hologres V4.0.7及以上版本。V4.0.1-4.0.6、V3.2、V3.1和V3.0版本文法參見下文自動重新整理資源。
建表時設定重新整理資源的SQL文法如下:
-- 本樣本文法基於Hologres V4.0.7及以上版本
-- 建表時指定重新整理資源
CREATE [EXTERNAL] DYNAMIC TABLE [ IF NOT EXISTS ] [<schema_name>.]<table_name>
[ (<col_name> [, ...] ) ]
[LOGICAL PARTITION BY LIST(<partition_key>)]
WITH (
-- dynamic table的屬性
freshness = '<num> {minutes | hours}', -- 必填
[computing_resource = {'local' | 'serverless' | '<warehouse_name>'},] -- 非必填
)
AS
<query>; -- query的定義手動重新整理時設定重新整理資源的SQL文法如下:
-- 本樣本文法基於Hologres V4.0.7及以上版本
-- 手動refresh時指定重新整理資源
refresh dynamic table [<schema_name>.]<table_name> with(computing_resource='local' | 'serverless' | '<warehouse_name>',]);注意事項
建立Dynamic Table時重新整理資源computing_resource指定了warehouse_name,刪除計算群組型執行個體後,refresh會報錯。
建立Dynamic Table時重新整理資源computing_resource指定了warehouse_name,當warehouse被rename後,refresh仍然會正常執行,DDL中會展示新的warehouse名。
當設定computing_resource為serverless,但Dynamic Table的Query定義中不滿足Serverless運行條件時,行為如下:
會自動退化成local資源執行重新整理。
如果是計算群組執行個體,local資源表示dynamic table 所在TG的leader Warehouse。如果是external dynamic table,則表示執行個體的default warehouse。
如果是非計算群組執行個體,local資源表示本執行個體預留資源。
使用hg_dump_script查看的DDL,computing_resource仍然為serverless,當Query滿足serverless條件時,會再次以serverless資源執行。每次refresh使用的資源請以慢Query 日誌為準。
重新整理資源方式
Hologres的Dynamic Table重新整理資源主要分為自動重新整理和手動重新整理兩種方式,不同版本的重新整理資源方式預設行為有所不同。
自動重新整理資源
建表時設定重新整理資源,不同版本對應的文法及預設行為如下:
V4.0.7及以上版本
SQL文法如下:
-- 建表時指定重新整理資源
CREATE [EXTERNAL] DYNAMIC TABLE [ IF NOT EXISTS ] [<schema_name>.]<table_name>
[ (<col_name> [, ...] ) ]
[LOGICAL PARTITION BY LIST(<partition_key>)]
WITH (
-- dynamic table的屬性
freshness = '<num> {minutes | hours}', -- 必填
[computing_resource = {'local' | 'serverless' | '<warehouse_name>'},] -- 非必填
)
AS
<query>; -- query的定義重新整理資源預設行為如下:
表類別 | 重新整理模式 | 重新整理資源 | |
非計算群組型執行個體 | 計算群組型執行個體 | ||
Dynamic Table | 增量重新整理&全量重新整理 |
|
|
External Dynamic Table | 增量重新整理&全量重新整理 |
|
|
V4.0.1-4.0.6版本
SQL文法如下:
-- 建表時指定重新整理資源
CREATE [EXTERNAL] DYNAMIC TABLE [ IF NOT EXISTS ] [<schema_name>.]<table_name>
[ (<col_name> [, ...] ) ]
[LOGICAL PARTITION BY LIST(<partition_key>)]
WITH (
-- dynamic table的屬性
freshness = '<num> {minutes | hours}', -- 必填
[computing_resource = {'local' | 'serverless' },] -- 非必填
)
AS
<query>; -- query的定義重新整理資源預設行為如下:
表類別 | 重新整理模式 | 重新整理資源 | |
非計算群組型執行個體 | 計算群組型執行個體 | ||
Dynamic Table | 增量重新整理&全量重新整理 |
|
|
External Dynamic Table | 增量重新整理&全量重新整理 |
|
|
V3.1-3.2版本
SQL文法如下:
-- 建表時指定重新整理資源
CREATE [EXTERNAL] DYNAMIC TABLE [ IF NOT EXISTS ] [<schema_name>.]<table_name>
[ (<col_name> [, ...] ) ]
[LOGICAL PARTITION BY LIST(<partition_key>)]
WITH (
-- dynamic table的屬性
freshness = '<num> {minutes | hours}', -- 必填
[computing_resource = {'local' | 'serverless' },] -- 非必填
)
AS
<query>; -- query的定義重新整理資源預設行為如下:
表類別 | 重新整理模式 | 重新整理資源 | |
非計算群組型執行個體 | 計算群組型執行個體 | ||
Dynamic Table | 增量重新整理&全量重新整理 |
|
|
V3.0版本
SQL文法如下:
CREATE DYNAMIC TABLE [IF NOT EXISTS] <schema.tablename>(
[col_name],
[col_name]
) [PARTITION BY LIST (col_name)]
WITH (
[refresh_mode='[full|incremental]',]
[incremental_auto_refresh_schd_start_time='[immediate|<timestamptz>]',]
[incremental_auto_refresh_interval='[<num> {minute|minutes|hour|hours]',]
[incremental_guc_hg_computing_resource='[ local | serverless]',]
[full_guc_hg_computing_resource='[ local | serverless]',]
)
AS
<query> --query的定義重新整理資源預設行為如下:
表類別 | 重新整理模式 | 重新整理資源 | |
非計算群組型執行個體 | 計算群組型執行個體 | ||
Dynamic Table | 增量重新整理&全量重新整理 |
|
|
手動重新整理資源
手動重新整理資源,不同版本對應的文法及預設行為如下:
V4.0.7及以上版本
SQL文法如下:
--手動refresh時指定重新整理資源
refresh dynamic table [<schema_name>.]<table_name> with(computing_resource='local' | 'serverless' | '<warehouse_name>',]);執行手動refresh時,沒有顯示設定computing_resource參數,預設使用表DDL中的computing_resource參數值進行重新整理。
執行手動refresh時,顯示設定computing_resource參數後,使用該參數執行操作。即使該參數與表DDL中的computing_resource參數值不同。
對於計算群組型執行個體:允許設定
local | serverless | warehouse_name3個值,其中local表示當前串連所在warehouse對非計算群組型執行個體:只允許
local | serverless2個值,local表示本執行個體資源。
V4.0.1-4.0.6版本
SQL文法如下:
refresh dynamic table [<schema_name>.]<table_name> with([computing_resource='local' | 'serverless' ,]);對於計算群組型執行個體:允許設定local | serverless 2個值,其中local資源表示base 表所在TG的leader warehouse和Dynamic Table 所在TG的leader warehouse,可能存在多個warehouse。
對非計算群組型執行個體:只允許local | serverless 2個值,local表示本執行個體資源。
V3.1-3.2版本
SQL文法如下:
refresh dynamic table [<schema_name>.]<table_name> with([computing_resource='local' | 'serverless' ,]);對於計算群組型執行個體:允許設定local | serverless 2個值,其中local資源表示base 表所在TG的leader warehouse和Dynamic Table 所在TG的leader warehouse,可能存在多個warehouse。
對非計算群組型執行個體:只允許local | serverless 2個值,local表示本執行個體資源。
V3.0版本
SQL文法如下:
refresh dynamic table [<schema_name>.]<table_name> with(
[incremental_guc_hg_computing_resource='[ local | serverless]',]
[full_guc_hg_computing_resource='[ local | serverless]',]);對於計算群組型執行個體:允許設定local | serverless 2個值,其中local資源表示Dynamic Table 所在TG的leader warehouse。
對非計算群組型執行個體:只允許local | serverless 2個值,local表示本執行個體資源。
版本升級說明
下列表格詳細說明了Hologres執行個體從不同源版本升級至目標版本後,Dynamic Table(動態表)在自動重新整理和手動重新整理情境下,其預設重新整理資源(如從Local變更為Serverless)及指定規則的變化。核心差異在於新、舊文法建立的表其行為不同,您可根據此表判斷版本升級可能帶來的影響,以確保業務平穩過渡。
自動重新整理資源版本升級
源版本
目標版本
表類型
重新整理模式
重新整理資源
非計算群組型執行個體
計算群組型執行個體
3.0
3.1
3.2
4.0.1-4.0.6
Dynamic Table
增量&全量重新整理
建立表(使用新文法):
預設資源從Local變更為Serverless。
支援指定重新整理資源為Local。
老表(使用3.0舊文法):
預設資源仍然為Local。
支援修改重新整理資源為Serverless。
建立表(使用新文法):
預設資源從Local變更為Serverless。
支援指定重新整理資源為Local,執行重新整理的warehouse為base表所在TG的Leader Warehouse和Dynamic Table所在TG的Leader Warehouse,可能存在多個warehouse。
老表(使用3.0舊文法):
預設資源仍然為Local,預設執行重新整理的是Dynamic Table所在TG的Leader。Warehouse,不支援指定warehouse_name。
支援修改重新整理資源為Serverless。
當老表文法變更為新文法後,使用local時,執行重新整理的warehouse從Dynamic Table所在TG的Leader Warehouse 變更為base表所在TG的Leader Warehouse和Dynamic。Table所在TG的Leader Warehouse,可能存在多個warehouse。
3.0
4.0.7及以上版本
Dynamic Table
增量&全量重新整理
建立表(使用新文法):
預設資源從Local變更為Serverless。
支援指定重新整理資源為Local。
老表(使用3.0舊文法):
預設資源仍然為Local。
支援修改重新整理資源為Serverless。
建立表(使用新文法):
預設資源從Local變更為Serverless。
允許指定warehouse_name執行重新整理。
當指定重新整理資源為Local,不顯示指定warehouse_name時,系統預設使用建立Dynamic Table時串連的warehouse執行重新整理。
老表(使用3.0舊文法):
預設資源仍然為Local,預設執行重新整理的是Dynamic Table所在TG的Leader。Warehouse,不支援指定warehouse_name
支援修改重新整理資源為Serverless。
當老表文法變更為新文法後,使用local資源時,執行重新整理的warehouse仍然為Dynamic Table所在TG的Leader Warehouse。
3.1
3.2
4.0.1-4.0.6
4.0.7及以上版本
Dynamic Table
增量&全量重新整理
建立表(使用新文法):
預設資源仍然為Serverless。
支援指定重新整理資源為Local。
老表(使用3.0舊文法):
預設資源仍然為Local。
支援修改重新整理資源為Serverless。
建立表(使用新文法):
預設資源仍然為Serverless。
允許指定warehouse_name執行重新整理。
當指定重新整理資源為Local,不顯示指定warehouse_name時,系統預設使用當前串連的warehouse執行重新整理。
老表(使用3.0舊文法):
預設資源仍然為Local,預設執行重新整理的是Dynamic Table所在TG的Leader Warehouse,不支援指定warehouse_name。
支援修改重新整理資源為Serverless。
當老表文法變更為新文法後,使用local時,執行重新整理的warehouse從base表所在TG的Leader Warehouse和Dynamic Table所在TG的Leader Warehouse變更為Dynamic Table所在TG的Leader Warehouse。
4.0.1-4.0.6
4.0.7及以上版本
External Dynamic Table
增量&全量重新整理
建立表(使用新文法):
預設資源為Serverless。
支援指定重新整理資源為Local。
建立表(使用新文法):
預設資源仍然為Serverless。
支援指定warehouse_name執行重新整理。
當指定重新整理資源為Local,不顯示指定warehouse_name時,系統預設使用當前串連的warehouse執行重新整理。
老表(4.0.1-4.0.6版本建立的表):
預設資源仍然為Serverless。
當指定重新整理資源為local時,系統預設使用的資源執行個體的Default Warehouse。
手動重新整理資源版本升級
源版本
目標版本
表類型
重新整理模式
重新整理資源
非計算群組型執行個體
計算群組型執行個體
3.0
3.1
3.2
4.0.1-4.0.6
Dynamic Table
增量&全量重新整理
未指定重新整理資源時,預設使用表DDL中設定的重新整理資源。
允許顯示指定重新整理資源為serverless或者local。
優先使用顯示指定的重新整理資源。
未指定重新整理資源時,預設使用表DDL中設定的重新整理資源。
允許顯示指定重新整理資源為serverless、local。
如果是新文法建立的表:Local資源從Dynamic Table所在TG的Leader Warehouse變更為base表所在TG的Leader Warehouse以及Dynamic Table所在TG的Leader Warehouse,可能存在多個Warehouse。
如果仍然是老文法的表(3.0版本文法):Local資源表示Dynamic Table所在TG的Leader Warehouse。
優先使用顯示指定的重新整理資源。
3.0
4.0.7及以上版本
Dynamic Table
增量&全量重新整理
未指定重新整理資源時,預設使用表DDL中設定的重新整理資源。
允許顯示指定重新整理資源為serverless或者local。
優先使用顯示指定的重新整理資源。
未指定重新整理資源時,預設使用表DDL中設定的重新整理資源。
允許顯示指定重新整理資源為serverless、local、warehouse_name。
如果是新文法建立的表:Local資源由Dynamic Table所在TG的Leader Warehouse變更為當前串連Warehouse。
如果仍然是老文法的表(3.0版本文法):Local資源表示Dynamic Table所在TG的Leader Warehouse。
優先使用顯示指定的重新整理資源。
3.1
3.2
4.0.1-4.0.6
4.0.7及以上版本
Dynamic Table
增量&全量重新整理
未指定重新整理資源時,預設使用表DDL中設定的重新整理資源。
允許顯示指定重新整理資源為serverless或者local。
優先使用顯示指定的重新整理資源。
未指定重新整理資源時,預設使用表DDL中設定的重新整理資源。
允許顯示指定重新整理資源為serverless、local、warehouse_name。
如果是新文法建立的表:Local資源由base表所在TG的Leader Warehouse以及Dynamic Table所在TG的Leader Warehouse變更為當前串連Warehouse。
如果仍然是老文法的表(3.0版本文法):Local資源表示Dynamic Table所在TG的Leader Warehouse。
優先使用顯示指定的重新整理資源。
4.0.1-4.0.6
4.0.7及以上版本
External Dynamic Table
增量&全量重新整理
未指定重新整理資源時,預設使用表DDL中設定的重新整理資源。
允許顯示指定重新整理資源為serverless或者local。
優先使用顯示指定的重新整理資源。
未指定重新整理資源時,預設使用表DDL中設定的重新整理資源。
顯示指定重新整理資源為serverless、local、warehouse_name。
Local資源表示當前串連的Warehouse
優先使用顯示指定的重新整理資源。