予測不能な読み取りおよび書き込みリクエストは、専用型インスタンスのリソースを突然枯渇させ、他の操作に影響を与える可能性があります。この問題に対処するため、Hologres V3.1 ではアダプティブサーバーレスコンピューティングが導入されました。この機能は、大規模なクエリを自動的に識別し、サーバーレスリソースを動的に割り当てて実行することで、安定性とリソース使用率を向上させます。
仕組み
SQL クエリが消費するサーバーレスリソースは、インスタンスのサーバーレスリソースクォータ、クエリごとに許可される最大サーバーレスリソース、およびクエリが必要とするサーバーレスリソースの 3 つの要素の最小値によって決まります。Hologres は、SQL の複雑さとデータサイズに基づいて、必要なリソースを見積もります。
アダプティブサーバーレスコンピューティングでは、ユーザーが使用量のしきい値を定義できます。クエリが必要とするサーバーレスリソースがこれらのしきい値を超えると、「大きなタスク」として通知されます。その後、Hologres はこれらのタスクを自動的にルーティングし、サーバーレスリソース上で実行します。
機能の使用
リソースのしきい値には、絶対値とパーセンテージの 2 種類を定義できます。クエリに必要なサーバーレスリソースが両方のしきい値を超えた場合、Hologres はクエリを自動的にサーバーレスコンピューティングにルーティングします。
アダプティブサーバーレスコンピューティングを有効にする
hg_enable_adaptive_serverless_computingとhg_adaptive_serverless_computing_enable_big_query_isolationの両方をonに設定します。-- セッションレベルで有効にする SET hg_enable_adaptive_serverless_computing = on; SET hg_adaptive_serverless_computing_enable_big_query_isolation = on; -- ユーザーレベルで有効にする ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_enable_adaptive_serverless_computing = on; ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_adaptive_serverless_computing_enable_big_query_isolation = on; -- データベースレベルで有効にする ALTER DATABASE <db_name> SET hg_enable_adaptive_serverless_computing = on; ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_enable_big_query_isolation = on;しきい値を変更します。次の条件が満たされると、クエリは自動的にサーバーレスリソースを使用します:
必要なサーバーレスリソース > max(比率のしきい値, パーセンテージのしきい値)。hg_adaptive_serverless_computing_min_resource_ratio_threshold: パーセンテージのしきい値の係数。デフォルト:0.3。仮想ウェアハウスインスタンスの場合: パーセンテージのしきい値 = 係数 * 仮想ウェアハウスの予約済みリソース
汎用インスタンスの場合: パーセンテージのしきい値 = 係数 * 予約済みインスタンスリソース
hg_adaptive_serverless_computing_min_cores_threshold: 絶対しきい値。デフォルト:256。
-- セッションレベルで変更 SET hg_adaptive_serverless_computing_min_resource_ratio_threshold = 0.3; SET hg_adaptive_serverless_computing_min_cores_threshold = 256; -- ユーザーレベルで変更 ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_adaptive_serverless_computing_min_resource_ratio_threshold = 0.3; ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_adaptive_serverless_computing_min_cores_threshold = 256; -- データベースレベルで変更 ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_min_resource_ratio_threshold = 0.3; ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_min_cores_threshold = 256;
機能がトリガーされたかどうかの確認
アダプティブサーバーレスコンピューティングは、クエリの見積もりリソースに基づいてトリガーされます。この動作を確認するには、組み込みのリソース見積もり関数を使用します。この関数は、必要と見積もられたサーバーレスリソースを返し、現在の構成に基づいてアダプティブサーバーレスコンピューティングが有効になるかどうかを示します。
-- SQL 文で単一引用符のエスケープが不要な場合は、この構文を使用します。
SELECT * FROM hologres.hg_estimate_adaptive_serverless_computing('select * from tbl;');
-- SQL 文で単一引用符のエスケープが必要な場合は、この構文を使用します。
SELECT * FROM hologres.hg_estimate_adaptive_serverless_computing($$insert into test_tbl_dst_1 select * from test_tbl_src;$$);この関数は次の値を返します:
戻り値名 | 説明 |
| クエリに必要と見積もられたサーバーレスリソース。 |
| 現在の構成で、アダプティブサーバーレスコンピューティングがクエリをサーバーレスリソースにルーティングするかどうかを示します。
|
| パーセンテージのしきい値の係数。 |
| 絶対しきい値。 |