仮想ウェアハウスの表示、作成、削除、スケーリングの方法について説明します。
注意
バージョンの互換性: Hologres V2.0.4 以降のバージョンのみが仮想ウェアハウスインスタンスをサポートします。以前のバージョンについては、テクニカルサポートに連絡してスペックアップを依頼してください。
インスタンスの制限: 各インスタンスは最大 10 個の仮想ウェアハウスをホストできます。各仮想ウェアハウスのリソースは 32 CU (Compute Unit) から 512 CU の間でなければなりません。
V3.0.10 以降: 最大仕様が 1024 CU に増加しました。
V3.0.27 以降: 仮想ウェアハウスの最大仕様制限が削除されました。
デフォルトの仮想ウェアハウス: 新しい仮想ウェアハウスインスタンスを購入すると、
init_warehouseという名前のデフォルトの仮想ウェアハウスが自動的に作成されます。各インスタンスは 1 つのデフォルトの仮想ウェアハウスに制限されます。これを削除することはできませんが、名前と仕様は変更できます。SQL コマンドを使用してデフォルトの仮想ウェアハウスを停止または再開することはできません。デフォルトでは、すべてのユーザーがデフォルトの仮想ウェアハウスを使用する権限を持っています。DDL 文: DDL 文はすべての仮想ウェアハウスで実行できます。
リソースの隔離: 仮想ウェアハウスインスタンスはリソースグループ (非推奨予定) をサポートしていません。リソースを隔離するには、複数の仮想ウェアハウスを作成します。詳細については、「リソースグループの管理 (ベータ)」をご参照ください。
課金: 詳細については、「課金の概要」をご参照ください。
仮想ウェアハウスの作成
注意
Alibaba Cloud アカウントまたはインスタンスのスーパーユーザー権限を持つ RAM ユーザーのみが仮想ウェアハウスを作成できます。
仮想ウェアハウスの作成は、バックグラウンドで実行される非同期プロセスです。仮想ウェアハウスの準備ができたことを確認するには、
hg_get_warehouse_status関数を使用してそのステータスをクエリします。
手順
(推奨) UI の使用
Hologres コンソールにログインします。上部のメニューバーで、インスタンスが配置されているリージョンを選択します。
左側のメニューで [インスタンス] を選択します。インスタンス ID をクリックして、その詳細ページにアクセスします。
左側のサブメニューで [仮想ウェアハウス管理] をクリックし、[仮想ウェアハウスリソース管理] タブに移動します。
[仮想ウェアハウスの作成] をクリックします。ダイアログで、次のパラメーターを構成し、[OK] をクリックします。
パラメーター
説明
仮想ウェアハウス名
作成する仮想ウェアハウスの名前。
単一クラスターの仕様
仮想ウェアハウス内の各クラスター用に予約されているリソース。
予約済みクラスター
仮想ウェアハウス内の初期クラスター数。これらの予約済みクラスターのコンピューティングリソースは、インスタンスの予約済みリソースから取得されます。
詳細については、「リソースのスケーラビリティの概要」をご参照ください。
SQL コマンドの使用
構文
CALL hg_create_warehouse ('<warehouse_name>', <cu>);パラメーター
パラメーター
タイプ
説明
warehouse_name
TEXT
新しい仮想ウェアハウスの名前。命名規則:
数字、文字、アンダースコアのみを含める必要があります。
長さは 127 文字以下である必要があります。
cu
INTEGER
仮想ウェアハウスの CU 数。
最大値: 512。
最小値: 32。
16 の倍数である必要があります。
仮想ウェアハウスの削除
注意
Alibaba Cloud アカウントまたはインスタンスのスーパーユーザー権限を持つ RAM ユーザーのみが仮想ウェアハウスを削除できます。
インスタンスのデフォルトの仮想ウェアハウスは削除できません。
SQL コマンドを使用してテーブルグループのリーダー仮想ウェアハウスを削除することはできません。
仮想ウェアハウスの削除は、バックグラウンドで実行される非同期プロセスです。削除されたことを確認するには、
hg_get_warehouse_status関数を使用して仮想ウェアハウスのステータスをクエリします。
手順
(推奨) UI の使用
Hologres コンソールにログインします。上部のメニューバーで、インスタンスが配置されているリージョンを選択します。
左側のメニューで [インスタンス] を選択します。インスタンス ID をクリックして、その詳細ページにアクセスします。
左側のサブメニューで [仮想ウェアハウス管理] をクリックし、[仮想ウェアハウスリソース管理] タブに移動します。
ターゲットの仮想ウェアハウスの [アクション] 列で、[停止] をクリックし、操作を確認します。
仮想ウェアハウスが停止した後、[アクション] 列の [削除] をクリックして削除します。
SQL コマンドの使用
構文
CALL hg_drop_warehouse ('<warehouse_name>');パラメーター
パラメーター
タイプ
説明
warehouse_name
TEXT
削除する仮想ウェアハウスの名前。
仮想ウェアハウスのスケール
権限
V3.0.28 より前は、Alibaba Cloud アカウントまたは RAM ユーザーのみが仮想ウェアハウスをスケーリングできました。V3.0.28 以降、RAM ロールもこの操作を実行できます。
仮想ウェアハウスをスケーリングするには、次の権限が必要です:
RAM ロールの権限:
AliyunHologresWarehouseFullAccessまたはAliyunHologresFullAccess。インスタンス内のスーパーユーザー権限。
仮想ウェアハウスのエラスティックスケーリングに関する情報については、「リソースのスケーラビリティの概要」をご参照ください。
仮想ウェアハウスのスケールアップ
注意
仮想ウェアハウスをスケールアップする前に、まずコンソールでインスタンスをスケールアップして、インスタンスに十分な未割り当てリソースがあることを確認してください。インスタンスリソースを調整すると、新しい Pod の起動がトリガーされます。これらの Pod はシャードメタデータをロードしたり、計算に参加したりせず、インスタンスのスケーリングは進行中のクエリや書き込みに影響を与えません。
インスタンスがスケールアップされ、十分な未割り当てリソースがあると、これらのリソースを使用して仮想ウェアハウスをスケールアップできます。十分な未割り当てリソースがないインスタンスは、仮想ウェアハウスのスケールアップをサポートできません。
自動リバランス: Hologres V2.2 以降、スケーリング後に仮想ウェアハウスに空の Pod がある場合、Hologres は自動的にリバランスを実行して、これらの新しい Pod にシャードメタデータをロードします。新しく割り当てられたリソースは、リバランスが完了すると使用可能になります。以前のバージョンでは、仮想ウェアハウスをスケールアップした後に手動でリバランスを実行する必要があります。
リバランスの影響: リバランスにより、読み取りと書き込みが約 15 秒間中断されます。Hologres V3.0.28 以降、リバランスはダウンタイムなしで行われますが、関連する Flink ジョブがフェイルオーバーする可能性があります。
説明スケールアップ中、複数行の DML トランザクションは引き続き中断されます。これには、
hg_experimental_enable_transactionパラメーターが明示的に有効になっている DML トランザクション、ネイティブの INSERT OVERWRITE 文、および 動的テーブル の増分更新が含まれます。
手順
(推奨) UI の使用
Hologres コンソールにログインします。上部のメニューバーで、インスタンスが配置されているリージョンを選択します。
左側のメニューで [インスタンス] を選択します。インスタンス ID をクリックして、その詳細ページにアクセスします。
左側のサブメニューで [仮想ウェアハウス管理] をクリックし、[仮想ウェアハウスリソース管理] タブに移動します。
ターゲットの仮想ウェアハウスの [アクション] 列で、[構成の変更] をクリックします。[単一クラスターの仕様] の値を増やし、[OK] をクリックします。
(オプション) [アクション] 列の [リバランス] をクリックして、新しく追加された Pod にシャードを再配布します。
SQL コマンドの使用
仮想ウェアハウスをスケールアップします:
CALL hg_alter_warehouse ('<warehouse_name>',<cu>);パラメーター:
パラメーター
タイプ
説明
warehouse_name
TEXT
変更する仮想ウェアハウスの名前。
cu
INTEGER
仮想ウェアハウスのターゲット CU 数。
最大値: 512。
最小値: 32。
16 の倍数である必要があります。
仮想ウェアハウスのステータスをクエリします。
スケーリングプロセスは非同期です。操作が完了したことを確認するには、
hg_get_warehouse_status関数を使用します:select hg_get_warehouse_status('<warehouse_name>');関数が
Runningを返すと、仮想ウェアハウスは実行中のステータスになり、さらなる操作の準備が整います。シャードをリバランスします。
スケールアップされた仮想ウェアハウスでシャードをリバランスします。
SELECT hg_rebalance_warehouse ('<warehouse_name>');リバランスの進行状況をクエリします。
リバランスプロセスは非同期です。完了を確認するには、そのステータスをクエリします。
hg_get_rebalance_warehouse_status関数を使用します:SELECT hg_get_rebalance_warehouse_status ('<warehouse_name>');関数が
DOINGを返すと、リバランスが進行中です。DONEはリバランスが終了したことを示します。hg_wait_until_rebalance_warehouse_done関数を使用して、仮想ウェアハウスがRunningステータスになったときに結果を返します:select hg_wait_until_rebalance_warehouse_done('<warehouse_name>',<timeout_seconds>);timeout_secondsパラメーターはオプションで、タイムアウト期間を秒単位で指定します。関数がDONEを返すと、リバランスは終了しています。
例: 次の SQL 文を使用して、read_warehouse_1 仮想ウェアハウスを 64 CU にスケールアップします。
-- 仮想ウェアハウスのリソースを増やす
CALL hg_alter_warehouse ('read_warehouse_1',64);
-- 仮想ウェアハウスのスケールアップが完了するのを待つ
SELECT wait_until_warehouse_running ('read_warehouse_1');
-- シャードをリバランスする
SELECT hg_rebalance_warehouse ('read_warehouse_1');
-- リバランスが完了するのを待つ
SELECT hg_wait_until_rebalance_warehouse_done ('read_warehouse_1');仮想ウェアハウスのスケールダウン
注意
仮想ウェアハウスをスケールダウンするとき、Hologres はまず、廃止される Pod からアクティブな Pod にシャードを移行します。影響:
Hologres V3.1 より前: スケールダウンにより、影響を受けるシャードでの読み取りと書き込みが約 15 秒間中断されます。余分な Pod はリバランスプロセスの後に廃止されます。
(ベータ) Hologres V3.1 以降: スケールダウンは主要なクエリと書き込みを中断しません。廃止される Pod への接続は、短い秒単位の切断を経験し、関連する Flink ジョブがフェイルオーバーする可能性があります。ただし、スケールダウン開始時にアクティブな長時間実行操作 (60 分以上) は、スケールダウン開始後 60 分で失敗します。
説明スケールダウン中、複数行の DML トランザクションは引き続き中断されます。これには、
hg_experimental_enable_transactionパラメーターが明示的に有効になっている DML トランザクション、ネイティブの INSERT OVERWRITE 文、および 動的テーブル の増分更新が含まれます。スケールダウン後、解放されたリソースはインスタンスの未割り当てリソースプールに戻されます。これらのリソースは、新しい仮想ウェアハウスの作成や他の既存の仮想ウェアハウスのスケールアップに使用できます。または、インスタンス自体をスケールダウンすることでこれらのリソースを解放することもできます。
手順
(推奨) UI の使用
「仮想ウェアハウスのスケールアップ」の手順に従いますが、[単一クラスターの仕様] を減らします。
SQL コマンドの使用
仮想ウェアハウスをスケールダウンします。
CALL hg_alter_warehouse ('<warehouse_name>',<cu>);パラメーター
パラメーター
タイプ
説明
warehouse_name
TEXT
スケールする仮想ウェアハウスの名前。
cu
INTEGER
仮想ウェアハウスのターゲット CU 数。
最大値: 512。
最小値: 32。
16 の倍数である必要があります。
仮想ウェアハウスのステータスをクエリします。
スケールダウンプロセスは非同期です。操作が完了したことを確認するには、
hg_get_warehouse_status関数を使用します。select hg_get_warehouse_status('<warehouse_name>');スケールダウンが終了した場合、関数は
Runningを返します。
仮想ウェアハウスのスケールアウト (クラスターの追加)
使用上の注意
「仮想ウェアハウスのスケールアップ」の「注意」セクションをご参照ください。
手順
Hologres コンソールにログインします。上部のメニューバーで、インスタンスが配置されているリージョンを選択します。
左側のメニューで [インスタンス] を選択します。インスタンス ID をクリックして、その詳細ページにアクセスします。
左側のサブメニューで [仮想ウェアハウス管理] をクリックし、[仮想ウェアハウスリソース管理] タブに移動します。
ターゲットの仮想ウェアハウスの [アクション] 列で、[構成の変更] をクリックし、[予約済みクラスター] を増やして、[OK] をクリックします。
仮想ウェアハウスのスケールイン (クラスターの削減)
注意
「仮想ウェアハウスのスケールダウン」の「注意」セクションをご参照ください。
手順
Hologres コンソールにログインします。上部のメニューバーで、インスタンスが配置されているリージョンを選択します。
左側のメニューで [インスタンス] を選択します。インスタンス ID をクリックして、その詳細ページにアクセスします。
左側のサブメニューで [仮想ウェアハウス管理] をクリックし、[仮想ウェアハウスリソース管理] タブに移動します。
ターゲットの仮想ウェアハウスの [アクション] 列で、[構成の調整] をクリックし、[予約済みクラスター] を減らして、[OK] をクリックします。
O&M
仮想ウェアハウスの表示
コマンド
hologres.hg_warehousesシステムビューには、現在のインスタンス内のすべての仮想ウェアハウスに関する情報が格納されます。SELECT * FROM hologres.hg_warehouses;現在の仮想ウェアハウスを表示します:
SELECT current_warehouse();
パラメーター
hologres.hg_warehousesシステムビューには、次のフィールドが含まれます:フィールド
タイプ
説明
例
warehouse_id
INTEGER
仮想ウェアハウスの一意の ID。
1warehouse_name
TEXT
仮想ウェアハウスの名前。
init_warehousecpu
INTEGER
仮想ウェアハウスの vCPU。
32mem
INTEGER
仮想ウェアハウスのメモリ (GB)。
128cluster_min_count
INTEGER
仮想ウェアハウスの最小クラスター数。
1cluster_max_count
INTEGER
仮想ウェアハウスの最大クラスター数。
1target_status
INTEGER
仮想ウェアハウスの最終ステータス。非同期のステータス更新のため、このフィールドはターゲットステータスを反映します。可能な値:
1: 実行中
2: 手動で停止
1status
INTEGER
仮想ウェアハウスの現在のステータス。状態は次のとおりです:
0: 初期化中
1: 実行中
2: 手動で停止
3: 処理に失敗しました。失敗の原因については、
status_detailフィールドを確認してください。4: 処理中
1status_detail
TEXT
仮想ウェアハウスのステータスに関する詳細。
is_default
BOOLEAN
これがデフォルトの仮想ウェアハウスであるかどうかを示します。
t: True
f: False
tconfig
TEXT
仮想ウェアハウスの構成。
comment
TEXT
仮想ウェアハウスのコメント。
仮想ウェアハウスの停止
注意
仮想ウェアハウスを停止するには、インスタンスのスーパーユーザー権限が必要です。
テーブルグループのリーダー仮想ウェアハウスは停止できません。
仮想ウェアハウスの停止は非同期プロセスです。操作が完了したことを確認するには、
hg_get_warehouse_status関数を使用してそのステータスをクエリします。
手順
(推奨) UI の使用
Hologres コンソールにログインします。上部のメニューバーで、インスタンスが配置されているリージョンを選択します。
左側のメニューで [インスタンス] を選択します。インスタンス ID をクリックして、その詳細ページにアクセスします。
左側のサブメニューで [仮想ウェアハウス管理] をクリックし、[仮想ウェアハウスリソース管理] タブに移動します。
ターゲットの仮想ウェアハウスの [アクション] 列で、[停止] をクリックします。
SQL コマンドの使用
構文
CALL hg_suspend_warehouse ('<warehouse_name>');パラメーター
パラメーター
タイプ
説明
warehouse_name
TEXT
停止する仮想ウェアハウスの名前。
仮想ウェアハウスの再開
注意
仮想ウェアハウスを再開するには、インスタンスのスーパーユーザー権限が必要です。
仮想ウェアハウスの再開は非同期プロセスです。操作が完了したことを確認するには、
hg_get_warehouse_status関数を使用してそのステータスをクエリします。
手順
(推奨) UI の使用
Hologres コンソールにログインします。上部のメニューバーで、インスタンスが配置されているリージョンを選択します。
左側のメニューで [インスタンス] を選択します。インスタンス ID をクリックして、その詳細ページにアクセスします。
左側のサブメニューで [仮想ウェアハウス管理] をクリックし、[仮想ウェアハウスリソース管理] タブに移動します。
ターゲットの仮想ウェアハウスの [アクション] 列で、[開始] をクリックします。
SQL コマンド
構文
CALL hg_resume_warehouse ('<warehouse_name>');パラメーター
パラメーター
タイプ
説明
warehouse_name
TEXT
再開する仮想ウェアハウスの名前。
仮想ウェアハウスの再起動
注意事項
仮想ウェアハウスを再起動するには、インスタンスのスーパーユーザー権限が必要です。
仮想ウェアハウスの再起動は非同期プロセスです。操作が完了したことを確認するには、
hg_get_warehouse_status関数を使用してそのステータスをクエリします。
手順
(推奨) UI の使用
Hologres コンソールにログインします。上部のメニューバーで、インスタンスが配置されているリージョンを選択します。
左側のメニューで [インスタンス] を選択します。インスタンス ID をクリックして、その詳細ページにアクセスします。
左側のサブメニューで [仮想ウェアハウス管理] をクリックし、[仮想ウェアハウスリソース管理] タブに移動します。
ターゲットの仮想ウェアハウスの [操作] 列で、[再起動] をクリックし、操作を確認します。
SQL コマンド
構文
CALL hg_restart_warehouse('<warehouse_name>');パラメーター
パラメーター
タイプ
説明
warehouse_name
TEXT
再起動する仮想ウェアハウスの名前。
仮想ウェアハウスのステータスの取得
構文
仮想ウェアハウスの現在のステータスを取得します:
select hg_get_warehouse_status('<warehouse_name>');仮想ウェアハウスの作成やスケーリングなどの操作は非同期です。
wait_until_warehouse_running関数を使用して、仮想ウェアハウスがRunningに達するのを待って結果を返します:select wait_until_warehouse_running('<warehouse_name>',<timeout_seconds>);
パラメーター
パラメーター
タイプ
説明
warehouse_name
TEXT
仮想ウェアハウスの名前。
timeout_seconds
INTEGER
オプション。タイムアウト期間 (秒)。
例
次の例では、データをインポートする前に仮想ウェアハウスをスケールアップし、その後スケールダウンします。
-- warehouse_1 を 64 CU にスケールアップします。 CALL hg_alter_warehouse ('warehouse_1',64); -- warehouse_1 のスケールアップが完了するのを待ちます。 SELECT wait_until_warehouse_running('warehouse_1'); -- データを書き込みます。 INSERT INTO res_data SELECT * FROM org_data; -- warehouse_1 を 32 CU にスケールダウンします。 CALL hg_alter_warehouse ('warehouse_1',32);
仮想ウェアハウスの名前変更
注意
仮想ウェアハウスの名前を変更するには、インスタンスのスーパーユーザー権限が必要です。
手順
(推奨) UI の使用
Hologres コンソールにログインします。上部のメニューバーで、インスタンスが配置されているリージョンを選択します。
左側のメニューで [インスタンス] を選択します。インスタンス ID をクリックして、その詳細ページにアクセスします。
左側のサブメニューで [仮想ウェアハウス管理] をクリックし、[仮想ウェアハウスリソース管理] タブに移動します。
ターゲットの仮想ウェアハウスを見つけ、その名前の後にある
アイコンをクリックします。
SQL コマンドの使用
構文
CALL hg_rename_warehouse('<org_warehouse_name>','<new_warehouse_name>');パラメーター
パラメーター
タイプ
説明
org_warehouse_name
TEXT
仮想ウェアハウスの現在の名前。
new_warehouse_name
TEXT
仮想ウェアハウスの新しい名前。
高度な操作
仮想ウェアハウスのリバランス
実行時、各 Hologres 仮想ウェアハウスのワーカーノードはシャードメタデータを均等にロードします。ただし、高速回復やスケールアップ操作の後など、一部のシナリオでは、シャードがワーカーノード間で不均等に分散されることがあります。その場合、リバランスをトリガーして、データシャードをワーカーノード間で均等に再配布できます。
権限
リバランスをトリガーするには、インスタンスのスーパーユーザー権限が必要です。
注意
V2.1 以降: Hologres は、ワーカーノードにシャードがロードされていない仮想ウェアハウスに対して自動的にリバランスを開始します。
V2.2 以降: Hologres は、仮想ウェアハウスのリバランス中の
SELECTクエリの自動再試行をサポートするようになりました。この機能により、クエリは実行時間がわずかに増加するだけで完了し、ERROR: fail to execute query internal error: Get rundown is not allowed in recovering state.のようなエラーを防ぐことができます。
構文
SELECT hg_rebalance_warehouse ('<warehouse_name>');パラメーター
パラメーター
タイプ
説明
warehouse_name
TEXT
リバランスする仮想ウェアハウスの名前。
戻り値
リバランスをトリガーすると、Hologres は次のいずれかの結果を返します:
true: リバランスは正常にトリガーされました。false: リバランスは不要です。エラー: Pod のエラーなどの原因でリバランスのトリガーに失敗しました。
説明リバランス中、Hologres は再配布の必要性を評価し、最適なシャード分散を目指します。具体的には、任意の 2 つのワーカーノード上のシャードの数が 1 を超えて異なることはありません。例:
2 つのワーカーノードと 2 つのシャードがある場合、各ノードは 1 つのシャードを受け取ります。
2 つのワーカーノードと 3 つのシャードがある場合、一方のノードは 1 つのシャードを、もう一方は 2 つのシャードを受け取ります。
リバランスは通常 2〜3 分かかり、ロードされたテーブルグループの数に応じて所要時間が増加します。このプロセス中、書き込みは約 15 秒間中断されます。
リバランスは非同期プロセスです。この SQL コマンドを使用して進行状況を確認します:
SELECT hg_get_rebalance_warehouse_status('<warehouse_name>');このコマンドは、リバランスが進行中であることを示す
DOINGを返します。DONEはリバランスが完了したことを示します。
仮想ウェアハウスのタイムアウト期間の設定
タイムアウト期間は、statement_timeout パラメーターを使用して、セッション、データベース、または仮想ウェアハウスレベルで構成できます。詳細については、「GUC パラメーター」をご参照ください。
仮想ウェアハウスレベルのタイムアウト設定は、セッションレベルまたはデータベースレベルの構成よりも優先度が低くなります。有効にするには、まず既存のデータベースレベルのタイムアウト設定を削除します。
-- データベースレベルのタイムアウト設定を無効にします。
ALTER DATABASE <db_name> RESET statement_timeout;
-- 仮想ウェアハウスのタイムアウト期間を 600 秒に設定します。
CALL hg_alter_warehouse ('<warehouse_name>', <cu>, '{"configs":{"gucs":{"statement_timeout":"600000"}}}');