Dynamic Table刷新资源

本文将会为您介绍HologresDynamic Table刷新资源。

语法说明

Hologres中,Dynamic Table的刷新资源可以通过computing_resource参数指定,设置该参数时需要根据Hologres版本确定具体的设置语法。

参数说明

参数名称

是否必填

参数说明

参数示例

computing_resource

Dynamic Table刷新资源类型:

  • local:本实例资源,当实例是通用型实例时,Local代表实例的资源,与其他Query共享实例资源,无Query间的资源隔离能力。当处于业务高峰期时,可能会有资源争抢等问题发生。

  • serverless:为远端的全托管Serverless Computing资源池,无需预留固定规格的计算资源,引擎根据Query情况自动推导刷新运行的资源,可以实现Query级别的资源隔离和弹性扩缩容,详见Serverless Computing概述

  • warehouse_name:当实例为计算组型实例时,可以指定任意warehouse执行刷新,实现warehouse级别的资源隔离,详见计算组实例快速入门

    说明

    Hologres V4.0.7及以上版本支持参数值为warehouse_name

设置资源类型为serverless:computing_resource='serverless'

SQL语法

重要

此处设置Dynamic Table刷新资源SQL语法基于Hologres V4.0.7及以上版本。V4.0.1-4.0.6、V3.2、V3.1V3.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,当warehouserename后,refresh仍然会正常执行,DDL中会展示新的warehouse名。

  • 当设置computing_resourceserverless,但Dynamic TableQuery定义中不满足Serverless运行条件时,行为如下:

    • 会自动退化成local资源执行刷新。

      • 如果是计算组实例,local资源表示dynamic table 所在TGleader Warehouse。如果是external dynamic table,则表示实例的default warehouse。

      • 如果是非计算组实例,local资源表示本实例预留资源。

    • 使用hg_dump_script查看的DDL,computing_resource仍然为serverless,当Query满足serverless条件时,会再次以serverless资源执行。每次refresh使用的资源请以慢Query 日志为准。

刷新资源方式

HologresDynamic 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

增量刷新&全量刷新

  • 默认使用Serverless资源。

  • 支持指定刷新资源为Local本实例。

  • 默认使用Serverless资源。

  • 支持指定warehouse_name,指定后将会使用该warehouse执行刷新。

  • 当指定刷新资源为Local,不显示指定warehouse_name时,系统默认使用当前连接的warehouse执行刷新。

External Dynamic Table

增量刷新&全量刷新

  • 默认使用Serverless资源。

  • 支持指定刷新资源为Local本实例。

  • 默认使用Serverless资源。

  • 支持指定warehouse_name,指定后将会使用该warehouse执行刷新。

  • 当指定刷新资源为Local,不显示指定warehouse_name时,系统默认使用当前连接的warehouse执行刷新。

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

增量刷新&全量刷新

  • 默认使用Serverless资源。

  • 支持指定刷新资源为Local本实例。

  • 默认使用Serverless资源。

  • 支持指定刷新资源为Local,执行刷新时,使用的资源为base表所在TGLeader WarehouseDynamic Table所在TGLeader Warehouse,可能存在多个warehouse。

  • 不支持指定warehouse_name。

External Dynamic Table

增量刷新&全量刷新

  • 默认使用Serverless资源。

  • 支持指定刷新资源为Local本实例。

  • 默认使用Serverless资源。

  • 支持指定刷新资源为Local,执行刷新时,使用的资源为创建External Dynamic Table时所在DBDefault Table GroupLeader Warehouse。

  • 不支持指定warehouse_name。

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

增量刷新&全量刷新

  • 默认使用Serverless资源。

  • 支持指定刷新资源为Local本实例。

  • 默认使用Serverless资源。

  • 支持指定刷新资源为Local,执行刷新时,使用的资源为base表所在TGLeader WarehouseDynamic Table所在TGLeader Warehouse,可能存在多个warehouse。

  • 不支持指定warehouse_name。

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

增量刷新&全量刷新

  • 默认使用Local资源。

  • 支持指定刷新资源为Serverless。

  • 默认刷新资源为Local,执行刷新时,使用的资源为Dynamic Table所在TGLeader Warehouse。

  • 支持指定刷新资源为Serverless。

  • 不支持指定warehouse_name。

手动刷新资源

手动刷新资源,不同版本对应的语法及默认行为如下:

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_name 3个值,其中local表示当前连接所在warehouse

  • 对非计算组型实例:只允许local | serverless 2个值,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 表所在TGleader warehouseDynamic Table 所在TGleader 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 表所在TGleader warehouseDynamic Table 所在TGleader 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 所在TGleader 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,执行刷新的warehousebase表所在TGLeader WarehouseDynamic Table所在TGLeader Warehouse,可能存在多个warehouse

    老表(使用3.0旧语法):

    • 默认资源仍然为Local,默认执行刷新的是Dynamic Table所在TGLeader。Warehouse,不支持指定warehouse_name。

    • 支持修改刷新资源为Serverless。

    • 当老表语法变更为新语法后,使用local时,执行刷新的warehouseDynamic Table所在TGLeader Warehouse 变更为base表所在TGLeader WarehouseDynamic。Table所在TGLeader 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所在TGLeader。Warehouse,不支持指定warehouse_name

    • 支持修改刷新资源为Serverless。

    • 当老表语法变更为新语法后,使用local资源时,执行刷新的warehouse仍然为Dynamic Table所在TGLeader 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所在TGLeader Warehouse,不支持指定warehouse_name。

    • 支持修改刷新资源为Serverless。

    • 当老表语法变更为新语法后,使用local时,执行刷新的warehousebase表所在TGLeader WarehouseDynamic Table所在TGLeader Warehouse变更为Dynamic Table所在TGLeader 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所在TGLeader Warehouse变更为base表所在TGLeader Warehouse以及Dynamic Table所在TGLeader Warehouse,可能存在多个Warehouse。

    • 如果仍然是老语法的表(3.0版本语法):Local资源表示Dynamic Table所在TGLeader Warehouse。

    • 优先使用显示指定的刷新资源。

    3.0

    4.0.7及以上版本

    Dynamic Table

    增量&全量刷新

    • 未指定刷新资源时,默认使用表DDL中设置的刷新资源。

    • 允许显示指定刷新资源为serverless或者local。

    • 优先使用显示指定的刷新资源。

    • 未指定刷新资源时,默认使用表DDL中设置的刷新资源。

    • 允许显示指定刷新资源为serverless、local、warehouse_name。

    • 如果是新语法创建的表:Local资源由Dynamic Table所在TGLeader Warehouse变更为当前连接Warehouse。

    • 如果仍然是老语法的表(3.0版本语法):Local资源表示Dynamic Table所在TGLeader 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表所在TGLeader Warehouse以及Dynamic Table所在TGLeader Warehouse变更为当前连接Warehouse。

    • 如果仍然是老语法的表(3.0版本语法):Local资源表示Dynamic Table所在TGLeader Warehouse。

    • 优先使用显示指定的刷新资源。

    4.0.1-4.0.6

    4.0.7及以上版本

    External Dynamic Table

    增量&全量刷新

    • 未指定刷新资源时,默认使用表DDL中设置的刷新资源。

    • 允许显示指定刷新资源为serverless或者local。

    • 优先使用显示指定的刷新资源。

    • 未指定刷新资源时,默认使用表DDL中设置的刷新资源。

    • 显示指定刷新资源为serverless、local、warehouse_name。

    • Local资源表示当前连接的Warehouse

    • 优先使用显示指定的刷新资源。