Hologres では、サーバーレスコンピューティングリソースを使用してタスクを実行できます。これらのリソースは、インスタンスレベルと SQL レベルの両方で制限されています。このトピックでは、サーバーレスコンピューティングのリソース制限について説明し、SQL クエリのサーバーレスリソースを管理する方法を解説します。
サーバーレスリソースクォータ
サーバーレスリソースクォータは、Hologres インスタンスがリクエストできるサーバーレスコンピューティングリソースの最大量です。このクォータは、インスタンスの専用コンピューティングリソースによって決まります。次の表に、この関係を示します。
インスタンスのコンピューティングユニット (CU) | サーバーレスリソースクォータ |
インスタンスのコンピューティングリソース < 32 | サーバーレスコンピューティングはサポートされていません。 |
インスタンスのコンピューティングリソースの値が 32 以上 688 未満である必要があります。 |
|
インスタンスのコンピューティングリソース >= 688 | クォータの上限は 2048 CU です。 この上限は v3.1.9 以降、4096 CU に増加します。 |
サーバーレスリソースクォータは、インスタンス上でアクティブなすべての SQL クエリ (EXECUTE 状態) が同時に使用できるサーバーレスリソースの最大量です。
各ゾーンのサーバーレスリソースプールは、そのゾーン内のすべてのインスタンスで共有されます。
サーバーレスコンピューティングは従量課金制のコンピューティングリソースであり、リソースの割り当ては保証されません。インスタンスのクォータを超過した場合や、ゾーンのサーバーレスリソースプールが満杯になった場合、送信された SQL クエリはキューイングされ (QUEUE 状態になり)、リソースを待機します。
SQL クエリのサーバーレスリソースの設定
SQL クエリに割り当てられるリソース量は、次の表で説明する 3 つの要素の最小値です。リソースは 15 CU 単位でリクエストされます。
パラメーターまたは制限 | 説明 |
クォータ | Hologres インスタンスが使用できるサーバーレスコンピューティングリソースの最大値。 |
hg_experimental_serverless_computing_max_cores (Max Cores) | 単一の SQL クエリに割り当て可能なサーバーレスコンピューティングリソースの上限。このパラメーターは変更可能です。
|
hg_experimental_serverless_computing_required_cores (Required Cores) | システムが SQL クエリに必要と推定するサーバーレスコンピューティングリソースの量。デフォルト値は 0 で、自動推定が有効になります。0 以外の値を指定した場合、システムは指定された値と自身の推定値の 50% のうち、大きい方を使用します。 |
Max Cores の設定
次の文を実行して、単一の SQL クエリに対するサーバーレスリソースの上限を設定できます。
SQL の実行に十分なリソースを確保するため、このパラメーターの変更は避けてください。変更する必要がある場合は、まず十分なテストを実施してください。
-- 単一のサーバーレスコンピューティングタスクに割り当てる CU の最大値を設定します。デフォルト:512。
SET hg_experimental_serverless_computing_max_cores = 512;
-- 構成をリセットします。
reset hg_experimental_serverless_computing_max_cores;例:
-- サーバーレスコンピューティングリソースを使用して SQL クエリを実行します。
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;Required Cores の設定
デフォルトでは、システムはクエリの複雑さに基づいて必要なリソースを自動的に推定します。この自動推定により、リソース使用率とクエリ実行時間のバランスが取られます。
より多くのサーバーレスコンピューティングリソースを割り当てることでクエリのパフォーマンスを向上させるには、次の文を実行してリソース量を指定できます。
このパラメーターは変更しないでください。不十分なリソースを割り当てると、メモリ不足 (OOM) エラーが発生する可能性があります。このパラメーターを変更する必要がある場合は、まず十分なテストを実施してください。
安定性を確保するため、Required Cores の値を指定すると、システムはリソースの最適化を実行します。SQL クエリの実行に実際に使用されるリソース量は max(required_cores, estimated_resources * 0.5) です。
-- デフォルト値の 0 は、リソースの自動推定を有効にします。
SET hg_experimental_serverless_computing_required_cores = XX;
-- 構成をリセットします。
reset hg_experimental_serverless_computing_required_cores;例:
-- サーバーレスコンピューティングリソースを使用して SQL クエリを実行します。
SET hg_computing_resource = 'serverless';
-- サーバーレスコンピューティングのコンピューティングリソースはシステムによって推定されません。実際にリクエストされるリソース量は max(96, system_estimated_resources * 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;Required Cores 戦略の調整
システムによって自動的に推定されるコンピューティングリソースの量が不十分または過剰であると判断した場合は、次のパラメーターを変更して Required Cores の推定戦略を調整できます。
このパラメーターのデフォルト値は 4 で、これは中立的なポリシーを表します。
システムが必要なリソースを過小評価している場合は、パラメーターの値を大きくすることができます。たとえば、値を 8 に設定すると、通常 60 CU を必要とするリクエストが 120 CU をリクエストするように調整されます。
システムが必要なリソースを過大評価している場合は、パラメーターの値を小さくすることができます。たとえば、値を 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;