Hologres は、サーバーレスコンピューティングリソースを使用したタスクの実行をサポートしています。利用可能なサーバーレスリソースは、インスタンスレベルと SQL レベルの両方で制限されています。このトピックでは、サーバーレスコンピューティングのリソース制限について説明し、SQL クエリのサーバーレスリソースを管理する方法を解説します。
サーバーレスリソースクォータ
サーバーレスリソースクォータは、Hologres インスタンスがリクエストできるサーバーレスリソースの最大量です。このクォータは、インスタンスの専用計算資源によって決まります。以下の表にこの関係の概要を示します。
専用リソース (CU) | サーバーレスリソースクォータ |
32 CU 未満 | サーバーレスコンピューティングはサポートされていません。 |
32 CU から 688 CU | クォータは、インスタンスの専用計算資源の 3 倍です。たとえば、32 CU の専用リソースを持つインスタンスのクォータは 32 * 3 = 96 CU です。 Hologres v3.0.33 以降、クォータはインスタンスの専用計算資源の 5 倍に増加し、上限は 2048 CU です。この上限は v3.1.9 以降 4096 CU に引き上げられます。 |
688 CU 以上 | クォータの上限は 2048 CU です。 この上限は v3.1.9 以降 4096 CU に増加します。 |
サーバーレスリソースクォータは、インスタンス上のすべてのアクティブな SQL クエリ (
EXECUTE状態) が使用できる同時サーバーレスリソースの最大値です。各ゾーンのサーバーレスリソースプールは、そのゾーン内のすべてのインスタンスで共有されます。
インスタンスのサーバーレスリソースクォータを超過した場合、またはゾーン内のサーバーレスリソースプールが枯渇した場合、新しい SQL クエリはサーバーレスリソースが利用可能になるまでキューに入れられます (
QUEUE状態になります)。
SQL クエリのサーバーレスリソースを設定する
SQL クエリのリソース割り当ては、以下の表にある 3 つの要素の最小値によって決定されます。リソースは 15 CU 単位でリクエストされます。
要素 (パラメーター) | 説明 |
リソースクォータ | Hologres インスタンスが使用できるサーバーレスコンピューティングリソースの最大値。 |
最大リソース ( | 単一の SQL クエリに割り当て可能なサーバーレスリソースの上限を指定します。このパラメーターは設定可能です。デフォルト値:
|
必要リソース ( | Hologres が SQL クエリに必要と見積もるサーバーレスリソース。デフォルト値の |
最大リソースの設定
単一の SQL クエリのサーバーレスリソースの上限を設定するには、次の文を実行します。
SQL の実行に十分なリソースを確保するため、このパラメーターの変更は避けてください。変更する必要がある場合は、まず十分なテストを実施してください。
-- 単一のサーバーレスコンピューティングタスクに割り当てる最大 CU を設定します。デフォルト: 512。
SET hg_experimental_serverless_computing_max_cores = 512;
-- 構成をリセットします。
reset hg_experimental_serverless_computing_max_cores;例:
-- クエリのサーバーレスコンピューティングを有効にします。
SET hg_computing_resource = 'serverless';
-- 単一の SQL クエリの最大 CU を 32 に設定します。
SET hg_experimental_serverless_computing_max_cores = 32;
-- SQL クエリを実行します。
INSERT INTO sink_tbl SELECT * FROM source_tbl;
-- 構成をリセットします。
reset hg_computing_resource;
reset hg_experimental_serverless_computing_max_cores;必要リソースの設定
デフォルトでは、Hologres はクエリの複雑さに基づいて必要なリソースを自動的に見積もります。この自動見積もりにより、リソース使用率とクエリ実行時間のバランスが取れます。
より多くのサーバーレスリソースを割り当ててクエリのパフォーマンスを向上させるには、次の文を実行します。
このパラメーターの変更は推奨しません。リソースの割り当てが少なすぎると、OOM エラーが発生する可能性があります。変更する必要がある場合は、まず十分なテストを実施してください。
安定性を確保するため、このパラメーターが手動で指定された場合、Hologres は指定された値と自身の見積もりの 50% のうち、大きい方の値を使用します。
-- デフォルト値の 0 は、自動リソース見積もりを有効にします。
SET hg_experimental_serverless_computing_required_cores = XX;
-- 構成をリセットします。
reset hg_experimental_serverless_computing_required_cores;例:
-- クエリのサーバーレスコンピューティングを有効にします。
SET hg_computing_resource = 'serverless';
-- 96 CU を手動でリクエストします。実際にリクエストされるリソースは max (96, Hologres の見積もり * 0.5) です。
SET hg_experimental_serverless_computing_required_cores = 96;
-- SQL クエリを実行します。
INSERT INTO sink_tbl SELECT * FROM source_tbl;
-- 構成をリセットします。
reset hg_computing_resource;
reset hg_experimental_serverless_computing_required_cores;自動見積もり戦略の調整
自動リソース見積もりが一貫して不正確な場合は、hg_experimental_serverless_computing_resource_allocation_ratio パラメーターを変更して見積もり戦略を調整します。
デフォルト値は
4で、これは中立的な戦略を表します。Hologres が一貫してリソースを過小評価する場合は、この値を増やします。たとえば、
8に設定すると、見積もりリソースが 2 倍になります (例: 60 CU の見積もりが 120 CU になります)。Hologres が一貫してリソースを過大評価する場合は、この値を減らします。たとえば、
2に設定すると、見積もりリソースが半分になります (例: 60 CU の見積もりが 30 CU になります)。
-- SQL レベルで変更
SET hg_experimental_serverless_computing_resource_allocation_ratio = 4;
-- ユーザーレベルで変更
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_experimental_serverless_computing_resource_allocation_ratio = 4;
-- DB レベルで変更
ALTER DATABASE <db_name> SET hg_experimental_serverless_computing_resource_allocation_ratio = 4;