Hologres は、詳細なリソース管理機能を提供します。CPU やメモリを含むコンピューティングリソース (計算ユニット、CU) を、異なるユーザーアカウントに割り当てることができます。これにより、各ユーザーのリソース使用量の上限を設定し、単一インスタンス内で複数のワークロードを分離し、異なるユーザーやアプリケーションのジョブが互いに干渉するのを防ぐことができます。このトピックでは、リソースグループを使用して Hologres インスタンス内のコンピューティングリソースを管理し、リソース分離を実装する方法について説明します。
背景情報
Hologres V1.0 以前のバージョンでは、インスタンス間のリソース分離はサポートされていましたが、インスタンス内での詳細なユーザーレベルのリソース分離はサポートされていませんでした。本番環境では、ジョブの干渉を防ぐために、インスタンス内でユーザーごとにリソースを分離し、各ユーザーの最大リソース使用量を制限する必要があります。これらの詳細なリソース分離のニーズを満たすために、Hologres はインスタンス内のコンピューティングリソースを管理し、リソース分離を実装するためのリソースグループを導入しました。現在の技術的な制限により、すべてのタイプのコンピューティングワークロードがリソースグループを使用して分離できるわけではありません。本番環境でこの機能を使用する際は注意が必要です。より堅牢なリソース分離ソリューションとしては、エラスティック仮想ウェアハウスの使用を推奨します。
制限事項
-
リソースグループを使用してコンピューティングリソースを管理できるのは、Hologres V1.1 以降のバージョンのインスタンスのみです。ご利用のインスタンスがそれ以前のバージョンの場合は、「アップグレード準備エラーのトラブルシューティング」をご参照いただくか、Hologres DingTalk グループに参加してサポートを受けてください。詳細については、「オンラインサポートの利用方法」をご参照ください。
-
スーパーユーザ権限を持つユーザーのみが、リソースグループを使用して Hologres インスタンス内のコンピューティングリソースを管理できます。それ以外の場合、システムは権限エラーを報告します。
-
コンピューティングリソースはインスタンスレベルで管理されます。ユーザーが 1 つのインスタンス内に複数のデータベースを持っている場合、すべてのデータベースがそのインスタンスのコンピューティングリソースを共有し、同じリソース割り当てプランの対象となります。
HoloWeb でのリソースグループの設定
HoloWeb UI でリソースグループを設定するには、次の手順を実行します。
-
リソースグループの作成
-
HoloWeb に接続します。詳細については、「HoloWeb に接続してクエリを実行」をご参照ください。
-
HoloWeb の上部ナビゲーションバーで、Security Center をクリックします。
-
Security Center ページで、左側のナビゲーションウィンドウにある Resource Group Management をクリックします。
-
Resource Group Management ページで、ターゲットインスタンスを選択し、Add Resource Group をクリックします。
-
Add Resource Group ダイアログボックスで、Resource Group Name を入力し、Resource Group Quota を設定して、OK をクリックします。
説明Hologres インスタンス内のすべてのリソースグループのクォータの合計は 1 を超えることはできません。超えた場合、システムはエラーを報告します。
-
-
リソースグループの削除
-
HoloWeb に接続します。詳細については、「HoloWeb に接続してクエリを実行」をご参照ください。
-
HoloWeb の上部ナビゲーションバーで、Security Center をクリックします。
-
Security Center ページで、左側のナビゲーションウィンドウにある Resource Group Management をクリックします。
-
Resource Group Management ページで、削除したいリソースグループを見つけ、[操作] 列の Delete をクリックします。
説明関連付けられたユーザーがいるリソースグループは削除できません。
-
-
リソースグループのクォータ調整
-
HoloWeb に接続します。詳細については、「HoloWeb に接続してクエリを実行」をご参照ください。
-
HoloWeb の上部ナビゲーションバーで、Security Center をクリックします。
-
Security Center ページで、左側のナビゲーションウィンドウにある Resource Group Management をクリックします。
-
Resource Group Management ページで、ターゲットのリソースグループを見つけ、[Resource Group Quota] 列の Adjust Quota をクリックします。
-
Adjust Quota ダイアログボックスで、リソースグループのクォータを変更し、OK をクリックします。
-
-
ユーザーの関連付け
リソースグループを作成した後、HoloWeb でユーザーを関連付けることができます。
-
HoloWeb に接続します。詳細については、「HoloWeb に接続してクエリを実行」をご参照ください。
-
HoloWeb の上部ナビゲーションバーで、Security Center をクリックします。
-
Security Center ページで、左側のナビゲーションウィンドウにある Resource Group Management をクリックします。
-
Resource Group Management ページで、ターゲットのリソースグループを見つけ、[操作] 列の Associate User をクリックします。
-
[リソースグループの関連付け] ページで、Add User for Association をクリックします。
-
Associate User ダイアログボックスで、ユーザーを選択し、OK をクリックします。
説明-
関連付けたいユーザーがドロップダウンリストに表示されない場合、そのユーザーは現在のインスタンスに追加されていません。まず、ユーザー管理ページでユーザーを追加する必要があります。
-
1 人のユーザーは 1 つのリソースグループにのみ関連付けることができます。ユーザーを新しいリソースグループに関連付けると、以前の関連付けは上書きされます。
-
-
-
ユーザーの関連付け解除
-
HoloWeb に接続します。詳細については、「HoloWeb に接続してクエリを実行」をご参照ください。
-
HoloWeb の上部ナビゲーションバーで、Security Center をクリックします。
-
Security Center ページで、左側のナビゲーションウィンドウにある Resource Group Management をクリックします。
-
Resource Group Management ページで、ターゲットのリソースグループを見つけ、[操作] 列の Associate User をクリックします。
-
[Bind Resource Group] ページで、ターゲットユーザーの [操作] 列にある Disassociate User をクリックします。
-
Disassociate User ダイアログボックスで、OK をクリックします。
-
SQL を使用したリソースグループの設定
-
リソースグループ設定の表示
すべてのリソースグループ、設定されたクォータ、および関連付けられたユーザーを表示するには、次の SQL ステートメントを実行します。
SELECT * FROM pg_holo_resource_groups;結果の例:
res_group_name | property_key | property_value ----------------+--------------+------------------------------------------ resource_1 | worker_limit | 0.3 default | worker_limit | 0.7 resource_1 | bind_users | [ "13xxxxxxxxx13", "p4_29xxxxxxxxxx19" ] -
リソースグループの作成
説明-
デフォルトでは、システムは
defaultという名前のリソースグループを作成し、すべてのコンピューティングリソースをそれに割り当て、関連付けられていないすべてのユーザーをこのグループに割り当てます。 -
他のリソースグループを作成すると、
defaultリソースグループのクォータは自動的に残りの部分に調整されます。 -
defaultリソースグループには、総リソースの少なくとも 30% を割り当てることを推奨します。
リソースグループを作成するには、次の SQL ステートメントを実行します。
CALL hg_create_resource_group ('resource_group_name', quota);パラメーター
説明
resource_group_nameリソースグループの名前。名前には英字、数字、アンダースコア (_) を使用でき、長さは 50 文字以内である必要があります。
quotaリソースグループに割り当てられるリソースの割合。値は 0.1 から 0.9 の範囲 (両端を含む) で、小数点以下 1 桁まで指定できます。
-
-
リソースグループのクォータ変更
説明Hologres インスタンス内のすべてのリソースグループのクォータの合計は 1 を超えることはできません。超えた場合、エラーが発生します。
リソースグループのクォータを変更するには、次の SQL ステートメントを実行します。
CALL hg_alter_resource_group ('resource_group_name', quota);パラメーター
説明
resource_group_nameリソースグループの名前。リソースグループが存在する必要があります。存在しない場合、エラーが発生します。
quotaリソースグループに割り当てられるリソースの割合。値は 0.1 から 0.9 の範囲 (両端を含む) で、小数点以下 1 桁まで指定できます。
-
リソースグループの削除
説明関連付けられたユーザーがいるリソースグループは削除できません。
リソースグループを削除するには、次の SQL ステートメントを実行します。
CALL hg_drop_resource_group ('resource_group_name');パラメーター
説明
resource_group_nameリソースグループの名前。リソースグループが存在する必要があります。存在しない場合、エラーが発生します。
-
ユーザーとリソースグループの関連付け
説明-
1 人のユーザーは 1 つのリソースグループにのみ関連付けることができます。ユーザーを新しいリソースグループに関連付けると、以前の関連付けは上書きされます。
-
現在のユーザーを表示するには、次の SQL ステートメントを実行できます。
SELECT current_user;
リソースグループを作成した後、ユーザーを関連付けてコンピューティングリソースを制限できます。ユーザーをリソースグループに関連付けるには、次の SQL ステートメントを実行します。
-
構文
CALL hg_bind_resource_group('resource_group_name', 'user_name'); -
パラメーター
パラメーター
説明
resource_group_nameリソースグループの名前。リソースグループが存在する必要があります。存在しない場合、エラーが発生します。
user_nameユーザーの名前。ユーザーが存在し、リソースグループを含むインスタンスへのアクセス権限を持っている必要があります。そうでない場合、エラーが発生します。
-
例
CALL hg_bind_resource_group ('resource_1', 'p4_29xxxxxxxxxxx'); -- 注:Alibaba Cloud アカウント名は二重引用符で囲む必要があります。 CALL hg_bind_resource_group ('resource_1', '"ALIYUN$xxxx@aliyun.com"'); CALL hg_bind_resource_group ('resource_1', '"RAM$xxx@xxx:xxxx"'); CALL hg_bind_resource_group ('resource_1', '"13xxxxxxxxxxx13"');
-
-
ユーザーとリソースグループの関連付け解除
説明ユーザーがリソースグループから関連付けを解除されると、自動的に
defaultリソースグループに割り当てられます。ユーザーとリソースグループの関連付けを解除するには、次の SQL ステートメントを実行します。
-
構文
CALL hg_unbind_resource_group('resource_group_name', 'user_name'); -
パラメーター
パラメーター
説明
resource_group_nameリソースグループの名前。リソースグループが存在する必要があります。存在しない場合、エラーが発生します。
user_nameユーザーの名前。ユーザーが存在し、リソースグループを含むインスタンスへのアクセス権限を持っている必要があります。そうでない場合、エラーが発生します。
-
例
CALL hg_unbind_resource_group ('resource_1', 'p4_29xxxxxxxxxxxxx9'); -- 注:Alibaba Cloud アカウント名は二重引用符で囲む必要があります。 CALL hg_unbind_resource_group ('resource_1', '"RAM$xxxx@xxx:xxx"');
-
よくある質問
Q:リソースグループのクォータを 0.5 に設定した場合でも、CPU とメモリのメトリックが 50% を超えるのはなぜですか?
A:リソースグループのクォータは、主にクエリエンジンが使用する CPU とメモリを制限します。ただし、SQL の解析と最適化、メタデータ処理、スケジューリング、PQE 実行、コンパクションなどの操作を処理するために、CPU とメモリ使用量のごく一部は制限されません。さらに、リアルタイムのデータ書き込みの場合、クォータは CPU を制限しますが、メモリ使用量は制限しません。その結果、リソースグループの合計 CPU およびメモリメトリックは、設定されたクォータを超える可能性があります。