本文将会为您介绍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
优先使用显示指定的刷新资源。