本トピックでは、Hologres の動的テーブルの更新リソースについて説明します。
構文
Hologres では、`computing_resource` パラメーターを使用して動的テーブルの更新リソースを指定できます。このパラメーターを設定するための構文は、Hologres のバージョンによって異なります。
パラメーターの説明
パラメーター | 必須 | 説明 | 例 |
computing_resource | いいえ | 動的テーブルを更新するためのリソースタイプ:
| リソースタイプを serverless に設定: |
SQL 構文
ここで説明する動的テーブルの更新リソースを設定するための SQL 構文は、Hologres V4.0.7 以降のものです。V4.0.1 から V4.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 (
-- 動的テーブルのプロパティ。
freshness = '<num> {minutes | hours}', -- 必須。
[computing_resource = {'local' | 'serverless' | '<warehouse_name>'},] -- オプション。
)
AS
<query>; -- クエリの定義。以下の SQL 構文は、テーブルを手動で更新する際に更新リソースを設定します:
-- この例の構文は Hologres V4.0.7 以降のものです。
-- 手動更新時に更新リソースを指定します。
refresh dynamic table [<schema_name>.]<table_name> with(computing_resource='local' | 'serverless' | '<warehouse_name>',]);注意事項
動的テーブルの作成時に `computing_resource` を `warehouse_name` に設定した後、その計算グループインスタンスを削除すると、更新操作は失敗します。
動的テーブルの作成時に `computing_resource` を `warehouse_name` に設定した後、そのウェアハウスの名前を変更しても、更新操作は正常に実行され続けます。新しいウェアハウス名はデータ定義言語 (DDL) に表示されます。
`computing_resource` を `serverless` に設定しても、動的テーブルのクエリ定義が Serverless の実行条件を満たさない場合、以下の動作が発生します:
更新は自動的に `local` リソースの使用にフォールバックします。
計算グループインスタンスの場合、`local` リソースは動的テーブルが属するテーブルグループ (TG) のリーダーウェアハウスを指します。外部動的テーブルの場合、`local` リソースはインスタンスのデフォルトウェアハウスを指します。
非計算グループインスタンスの場合、`local` リソースはインスタンスの予約済みリソースを指します。
`hg_dump_script` を使用して DDL を表示すると、`computing_resource` の値は `serverless` のままです。クエリが Serverless の実行条件を満たすようになると、更新操作はサーバーレスリソースを使用します。各更新で使用されたリソースを特定するには、スロークエリログを確認してください。
更新リソースのメソッド
Hologres は、動的テーブルのリソースを更新するために、自動更新と手動更新の 2 つのメソッドを提供します。これらのメソッドのデフォルトの動作はバージョンによって異なります。
自動更新リソース
以降のセクションでは、異なるバージョンでテーブルを作成する際に更新リソースを設定するための構文とデフォルトの動作について説明します。
V4.0.7 以降
SQL 構文は以下の通りです:
-- テーブル作成時に更新リソースを指定します。
CREATE [EXTERNAL] DYNAMIC TABLE [ IF NOT EXISTS ] [<schema_name>.]<table_name>
[ (<col_name> [, ...] ) ]
[LOGICAL PARTITION BY LIST(<partition_key>)]
WITH (
-- 動的テーブルのプロパティ。
freshness = '<num> {minutes | hours}', -- 必須。
[computing_resource = {'local' | 'serverless' | '<warehouse_name>'},] -- オプション。
)
AS
<query>; -- クエリの定義。更新リソースのデフォルトの動作は以下の通りです:
テーブルクラス | 更新パターン | 更新リソース | |
非計算グループインスタンス | 計算グループインスタンス | ||
動的テーブル | 増分更新 & 完全更新 |
|
|
外部動的テーブル | 増分更新 & 完全更新 |
|
|
V4.0.1 から V4.0.6
SQL 構文は以下の通りです:
-- テーブル作成時に更新リソースを指定します。
CREATE [EXTERNAL] DYNAMIC TABLE [ IF NOT EXISTS ] [<schema_name>.]<table_name>
[ (<col_name> [, ...] ) ]
[LOGICAL PARTITION BY LIST(<partition_key>)]
WITH (
-- 動的テーブルのプロパティ。
freshness = '<num> {minutes | hours}', -- 必須。
[computing_resource = {'local' | 'serverless' },] -- オプション。
)
AS
<query>; -- クエリの定義。更新リソースのデフォルトの動作は以下の通りです:
テーブルクラス | 更新パターン | 更新リソース | |
非計算グループインスタンス | 計算グループインスタンス | ||
動的テーブル | 増分更新 & 完全更新 |
|
|
外部動的テーブル | 増分更新 & 完全更新 |
|
|
V3.1 から V3.2
SQL 構文は以下の通りです:
-- テーブル作成時に更新リソースを指定します。
CREATE [EXTERNAL] DYNAMIC TABLE [ IF NOT EXISTS ] [<schema_name>.]<table_name>
[ (<col_name> [, ...] ) ]
[LOGICAL PARTITION BY LIST(<partition_key>)]
WITH (
-- 動的テーブルのプロパティ。
freshness = '<num> {minutes | hours}', -- 必須。
[computing_resource = {'local' | 'serverless' },] -- オプション。
)
AS
<query>; -- クエリの定義。更新リソースのデフォルトの動作は以下の通りです:
テーブルクラス | 更新パターン | 更新リソース | |
非計算グループインスタンス | 計算グループインスタンス | ||
動的テーブル | 増分更新 & 完全更新 |
|
|
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> --クエリの定義更新リソースのデフォルトの動作は以下の通りです:
テーブルクラス | 更新パターン | 更新リソース | |
非計算グループインスタンス | 計算グループインスタンス | ||
動的テーブル | 増分更新 & 完全更新 |
|
|
手動更新リソース
以降のセクションでは、異なるバージョンでの手動リソース更新の構文とデフォルトの動作について説明します。
V4.0.7 以降
SQL 構文は以下の通りです:
--手動更新時に更新リソースを指定します。
refresh dynamic table [<schema_name>.]<table_name> with(computing_resource='local' | 'serverless' | '<warehouse_name>',]);手動更新を実行する際に `computing_resource` パラメーターを明示的に設定しない場合、更新操作はデフォルトでテーブルの DDL の `computing_resource` 値を使用します。
手動更新を実行し、`computing_resource` パラメーターを明示的に設定した場合、その値がテーブルの DDL の `computing_resource` 値と異なっていても、設定した値が操作に使用されます。
計算グループベースのインスタンスでは、
local | serverless | warehouse_nameの 3 つの値のいずれかを設定できます。ここで、local は現在の接続のウェアハウスを指定します。非計算グループインスタンスでは、
local | serverlessの 2 つの値のみが許可されます。ここで、`local` は現在のインスタンスのリソースを指定します。
V4.0.1 から V4.0.6
SQL 構文は以下の通りです:
refresh dynamic table [<schema_name>.]<table_name> with([computing_resource='local' | 'serverless' ,]);計算グループインスタンスでは、パラメーターを `local` または `serverless` に設定できます。`local` リソースは、ベーステーブルの TG のリーダーウェアハウスと動的テーブルの TG のリーダーウェアハウスを指します。複数のウェアハウスが使用される場合があります。
非計算グループインスタンスでは、パラメーターを `local` または `serverless` にのみ設定できます。`local` は現在のインスタンスのリソースを指します。
V3.1 から V3.2
SQL 構文は以下の通りです:
refresh dynamic table [<schema_name>.]<table_name> with([computing_resource='local' | 'serverless' ,]);計算グループインスタンスでは、パラメーターを `local` または `serverless` に設定できます。`local` リソースは、ベーステーブルの TG のリーダーウェアハウスと動的テーブルの TG のリーダーウェアハウスを指します。複数のウェアハウスが使用される場合があります。
非計算グループインスタンスでは、パラメーターを `local` または `serverless` にのみ設定できます。`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` に設定できます。`local` リソースは、動的テーブルの TG のリーダーウェアハウスを指します。
非計算グループインスタンスでは、パラメーターを `local` または `serverless` にのみ設定できます。`local` は現在のインスタンスのリソースを指します。
アップグレードに関する注意事項
以下の表では、Hologres インスタンスのスペックアップが、自動更新および手動更新のシナリオで動的テーブルに与える影響について詳しく説明します。変更点には、デフォルトのリフレッシュリソースが Local から Serverless に変更されることや、リソースを指定するためのルールなどが含まれます。コアな違いは、新しい構文と古い構文で作成されたテーブルの動作にあります。これらの表を使用して、スペックアップによる潜在的な影響を理解し、スムーズなビジネスのトランジションを確実にしてください。
自動更新リソースのアップグレード
ソースバージョン
ターゲットバージョン
テーブルタイプ
更新モード
更新リソース
計算グループのないインスタンス
計算グループのあるインスタンス
3.0
3.1
3.2
4.0.1-4.0.6
動的テーブル
増分 & 完全更新
新しいテーブル (新しい構文を使用):
デフォルトリソースが Local から Serverless に変更されます。
更新リソースを Local に設定できます。
既存のテーブル (3.0 構文):
デフォルトリソースは Local のままです。
更新リソースを Serverless に変更できます。
新しいテーブル (新しい構文を使用):
デフォルトリソースが Local から Serverless に変更されます。
更新リソースを Local に設定できます。更新は、ベーステーブルのテーブルグループ (TG) のリーダーウェアハウスと動的テーブルの TG のリーダーウェアハウスによって実行されます。このプロセスには複数のウェアハウスが関与する可能性があります。
既存のテーブル (古い 3.0 構文を使用):
デフォルトリソースは Local のままです。デフォルトでは、更新は動的テーブルの TG のリーダーウェアハウスによって実行されます。warehouse_name の指定はサポートされていません。
更新リソースを Serverless に変更できます。
既存のテーブルの構文を新しい構文に更新した後、local リソースを使用する場合、実行ウェアハウスが変更されます。動的テーブルの TG のリーダーウェアハウスから、ベーステーブルの TG のリーダーウェアハウスと動的テーブルの TG のリーダーウェアハウスの両方に変更されます。このプロセスには複数のウェアハウスが関与する可能性があります。
3.0
4.0.7 以降
動的テーブル
増分 & 完全更新
新しいテーブル (新しい構文を使用):
デフォルトリソースが Local から Serverless に変更されます。
更新リソースを Local に設定できます。
古いテーブル (V3.0 構文を使用):
デフォルトリソースは Local のままです。
更新リソースを Serverless に変更できます。
新しいテーブル (新しい構文を使用):
デフォルトリソースが Local から Serverless に変更されます。
warehouse_name を指定して更新を実行できます。
更新リソースを Local に設定し、warehouse_name を明示的に指定しない場合、デフォルトで動的テーブルが作成されたときに接続されていたウェアハウスが更新の実行に使用されます。
既存のテーブル (既存の 3.0 構文を使用):
デフォルトリソースは Local のままです。デフォルトでは、更新は動的テーブルの TG のリーダーウェアハウスによって実行されます。warehouse_name の指定はサポートされていません。
更新リソースを Serverless に変更できます。
既存のテーブルの構文を新しい構文に更新した後、local リソースを使用する場合、実行ウェアハウスは動的テーブルの TG のリーダーウェアハウスのままです。
3.1
3.2
4.0.1-4.0.6
4.0.7 以降
動的テーブル
増分 & 完全更新
新しいテーブル (新しい構文を使用):
デフォルトリソースは Serverless のままです。
更新リソースを Local に設定できます。
既存の 3.0 構文を使用するテーブル:
デフォルトリソースは Local のままです。
更新リソースを Serverless に変更できます。
新しいテーブル (新しい構文を使用):
デフォルトリソースは Serverless のままです。
warehouse_name を指定して更新を実行できます。
更新リソースを Local に設定し、warehouse_name を明示的に指定しない場合、デフォルトで現在接続されているウェアハウスが更新の実行に使用されます。
古い 3.0 構文を使用するテーブル:
デフォルトリソースは Local のままです。デフォルトでは、更新は動的テーブルの TG のリーダーウェアハウスによって実行されます。warehouse_name の指定はサポートされていません。
更新リソースを Serverless に変更できます。
既存のテーブルの構文を新しい構文に更新した後、local リソースを使用する場合、実行ウェアハウスはベーステーブルの TG のリーダーウェアハウスと動的テーブルの TG のリーダーウェアハウスの両方から、動的テーブルの TG のリーダーウェアハウスに変更されます。
4.0.1-4.0.6
4.0.7 以降
外部動的テーブル
増分 & 完全更新
新しいテーブル (新しい構文を使用):
デフォルトリソースは Serverless です。
更新リソースを Local に設定できます。
新しいテーブル (新しい構文を使用):
デフォルトリソースは Serverless のままです。
warehouse_name を指定して更新を実行できます。
更新リソースを Local に設定し、warehouse_name を明示的に指定しない場合、デフォルトで現在接続されているウェアハウスが更新の実行に使用されます。
古いテーブル (バージョン 4.0.1-4.0.6 で作成):
デフォルトリソースは Serverless のままです。
更新リソースを local に設定した場合、デフォルトでインスタンスのデフォルトウェアハウスが使用されます。
手動更新リソースのアップグレード
ソースバージョン
ターゲットバージョン
テーブルタイプ
更新モード
更新リソース
計算グループのないインスタンス
計算グループのあるインスタンス
3.0
3.1
3.2
4.0.1-4.0.6
動的テーブル
増分 & 完全更新
更新リソースが指定されていない場合、デフォルトでテーブルのデータ定義言語 (DDL) で設定されたリソースが使用されます。
更新リソースを serverless または local として明示的に指定できます。
明示的に指定された更新リソースが優先されます。
更新リソースが指定されていない場合、デフォルトでテーブルの DDL で設定されたリソースが使用されます。
更新リソースを serverless または local として明示的に指定できます。
新しい構文で作成されたテーブルの場合:Local リソースは動的テーブルの TG のリーダーウェアハウスから、ベーステーブルの TG のリーダーウェアハウスと動的テーブルの TG のリーダーウェアハウスの両方に変更されます。このプロセスには複数のウェアハウスが関与する可能性があります。
まだ古い構文 (V3.0 構文) を使用しているテーブルの場合:Local リソースは動的テーブルの TG のリーダーウェアハウスを表します。
明示的に指定された更新リソースが優先されます。
3.0
4.0.7 以降
動的テーブル
増分 & 完全更新
更新リソースが指定されていない場合、デフォルトでテーブルの DDL で設定されたリソースが使用されます。
更新リソースを serverless または local として明示的に指定できます。
明示的に指定された更新リソースが優先されます。
更新リソースが指定されていない場合、デフォルトでテーブルの DDL で設定されたリソースが使用されます。
更新リソースを serverless、local、または warehouse_name として明示的に指定できます。
新しい構文で作成されたテーブルの場合:Local リソースは動的テーブルの TG のリーダーウェアハウスから現在接続されているウェアハウスに変更されます。
まだ古い構文 (V3.0 構文) を使用しているテーブルの場合:Local リソースは動的テーブルの TG のリーダーウェアハウスを表します。
明示的に指定された更新リソースが優先されます。
3.1
3.2
4.0.1-4.0.6
4.0.7 以降
動的テーブル
増分 & 完全更新
更新リソースが指定されていない場合、デフォルトでテーブルの DDL で設定されたリソースが使用されます。
更新リソースを serverless または local として明示的に指定できます。
明示的に指定された更新リソースが優先されます。
更新リソースが指定されていない場合、デフォルトでテーブルの DDL で設定されたリソースが使用されます。
更新リソースを serverless、local、または warehouse_name として明示的に指定できます。
新しい構文で作成されたテーブルの場合:Local リソースはベーステーブルの TG のリーダーウェアハウスと動的テーブルの TG のリーダーウェアハウスの両方から、現在接続されているウェアハウスに変更されます。
まだ古い構文 (V3.0 構文) を使用しているテーブルの場合:Local リソースは動的テーブルの TG のリーダーウェアハウスを表します。
明示的に指定された更新リソースが優先されます。
4.0.1-4.0.6
4.0.7 以降
外部動的テーブル
増分 & 完全更新
更新リソースが指定されていない場合、デフォルトでテーブルの DDL で設定されたリソースが使用されます。
更新リソースを serverless または local として明示的に指定できます。
明示的に指定された更新リソースが優先されます。
更新リソースが指定されていない場合、デフォルトでテーブルの DDL で設定されたリソースが使用されます。
更新リソースを serverless、local、または warehouse_name として明示的に指定します。
Local リソースは現在接続されているウェアハウスを表します。
明示的に指定された更新リソースが優先されます。