Hologres V3.0 以降では、クエリキュー機能がサポートされています。この機能は、順序付けられたリクエスト処理、負荷分散、およびリソース管理を提供します。この機能により、特に高同時実行シナリオにおいて、システムの安定性と効率的な応答が保証されます。
概要
デフォルトでは、Hologres インスタンスは同時実行制御なしでリクエストを処理します。エンジンのコーディネーターノードがリソースを割り当ててリクエストを実行します。クエリキュー機能を使用すると、Hologres は設定された分類ルールに対して SQL リクエストを照合し、リクエストを異なるクエリキューに割り当てます。各クエリキューの最大同時実行リクエスト数を設定できます。リクエスト数がこの最大値に達すると、後続のリクエストは、実行に利用できる計算リソースができるまで、対応するキューで待機します。

注意事項
クエリキューやオプティマイザーなどの設定は、[汎用] インスタンスではインスタンスレベルで、[計算グループ] インスタンスでは計算グループレベルで適用されます。インスタンスに複数のデータベースが含まれている場合、クエリキューとオプティマイザーの設定はそれらすべてに適用されます。
クエリキュー機能は、Hologres V3.0 以降の [汎用] および [計算グループ] インスタンスでのみサポートされています。
説明ご利用のインスタンスが V2.2 以前の場合は、インスタンスをアップグレードするか、Hologres DingTalk グループに参加してアップグレードをリクエストできます。オンラインサポートのために DingTalk グループに参加する方法については、「オンラインサポートをさらに受けるにはどうすればよいですか?」をご参照ください。
Hologres V3.0.10 以降では、特定のクエリキュー内のすべての SQL クエリをサーバーレスコンピューティングリソースを使用して実行するように設定できます。クエリキューの同時実行設定とキューイングメカニズムは、ローカルリソースにのみ適用されます。サーバーレスコンピューティングリソースを使用して実行されるクエリは、クエリキューの同時実行設定とキューイングメカニズムの影響を受けません。
各 [汎用] インスタンスと、[計算グループ] インスタンス内の各計算グループには、
default_queueという名前のデフォルトクエリキューがあります。このキューには、最大同時実行数や最大キューサイズに制限はありません。default_queueクエリキューの分類子を作成することはできませんが、そのプロパティを設定することはできます。default_queueキューは、他のクエリキューに一致しないすべてのリクエストを管理します。
各 [汎用] インスタンスと各 [計算グループ] は、
default_queueを含め、最大 10 個のクエリキューをサポートします。各クエリキューは、最大 10 個の分類子を持つことができます。読み取り専用セカンダリインスタンスでは、クエリキュー機能を有効にすることはできません。ただし、プライマリインスタンスのクエリキュールールはセカンダリインスタンスに適用されます。
HQE、PQE、SQE、またはHiveQEの `engine_type` を持つクエリのみがクエリキューに一致させることができます。サポートされているクエリタイプには、SELECT、INSERT、UPDATE、DELETE 文、および COPY や CTAS などのコマンドによって生成される INSERT 文が含まれます。固定プランのクエリはクエリキューに入らず、同時実行数などのクエリキュー設定による制御を受けません。詳細については、「固定プランを使用した SQL 実行の高速化」をご参照ください。
1 つの分類子は 1 つのクエリキューにのみ属することができますが、1 つのクエリキューは複数の分類子を持つことができます。
操作手順
クエリキューの作成
構文
汎用 インスタンス
CALL hg_create_query_queue (query_queue_name, max_concurrency, max_queue_size);コンピューティンググループ インスタンス
CALL hg_create_query_queue (warehouse_name, query_queue_name, max_concurrency, max_queue_size);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。計算グループの名前を指定します。このパラメーターを指定しない場合、クエリキューは現在の接続の計算グループに作成されます。
説明このパラメーターは、[計算グループ] インスタンス専用です。
query_queue_name:このパラメーターは必須です。クエリキューの名前を指定します。名前は現在のインスタンスまたは計算グループ内で一意である必要があります。
max_concurrency:このパラメーターはオプションです。最大同時実行リクエスト数を指定します。デフォルト値は -1 で、同時実行数に制限がないことを示します。値は [-1, 2147483647) の範囲内である必要があります。
max_queue_size:このパラメーターはオプションです。キューに入れられるリクエストの最大数を指定します。このパラメーターは、キューに入れることができる SQL 文の最大数を指定します。デフォルト値は -1 で、キューサイズが無制限であることを示します。値は [-1, 2147483647) の範囲内である必要があります。
説明クエリキューを作成する際には、max_concurrency と max_queue_size プロパティのみを設定できます。他のプロパティの設定方法については、「クエリキュープロパティの設定」をご参照ください。
例
汎用 インスタンス
-- insert_queue という名前のクエリキューを作成し、最大同時実行数を 10 に設定します。同時実行数パラメーターには単一引用符は不要です。 CALL hg_create_query_queue ('insert_queue', 10);コンピュートグループのインスタンス
-- init_warehouse 計算グループに、insert_queue という名前のクエリキューを作成し、最大同時実行数を 10 に設定します。 CALL hg_create_query_queue ('init_warehouse', 'insert_queue', 10);
分類子の作成
構文
汎用 インスタンス
CALL hg_create_classifier (query_queue_name, classifier_name, priority);コンピュートグループ インスタンス
CALL hg_create_classifier (warehouse_name, query_queue_name, classifier_name, priority);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。計算グループの名前を指定します。このパラメーターを指定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは、[計算グループ] インスタンスにのみ適用されます。
query_queue_name:このパラメーターは必須です。分類子を作成するクエリキューの名前を指定します。
classifier_name:このパラメーターは必須です。分類子の名前を指定します。名前は現在のインスタンスまたは計算グループ内で一意である必要があります。
priority:このパラメーターはオプションです。分類子のマッチング優先度を指定します。値が大きいほど優先度が高くなります。デフォルト値は 50 です。値は [1, 100] の範囲内である必要があります。分類子の作成時にこのパラメーターを指定しない場合、後で設定できます。詳細については、「分類子プロパティの設定」をご参照ください。
説明優先度の高い分類子が最初に照合されます。
複数の分類子が同じ優先度を持つ場合、それらはクエリキューと分類子名の辞書順に基づいて照合されます。辞書順で先に来る名前が最初に照合されます。たとえば、queue_a(classifier_1) は queue_b(classifier_1) よりも優先度が高くなります。
例
汎用 インスタンス
-- insert_queue クエリキューに、classifier_insert という名前の分類子をマッチング優先度 20 で作成します。priority パラメーターには単一引用符は不要です。 CALL hg_create_classifier ('insert_queue', 'classifier_insert', 20);インスタンスとしての コンピュートグループタイプ
-- init_warehouse 計算グループの insert_queue クエリキューに、classifier_insert という名前の分類子をマッチング優先度 20 で作成します。 CALL hg_create_classifier ('init_warehouse', 'insert_queue', 'classifier_insert', 20);
分類子のマッチングルールの設定
分類子のマッチングルールを設定して、特定の SQL 文を照合できます。このプロセスにより、どの SQL 文が対応するクエリキューに入るかが決まります。
構文
汎用インスタンス
CALL hg_set_classifier_rule_condition_value (query_queue_name, classifier_name, condition_name, condition_value);[コンピュートグループ] インスタンス
CALL hg_set_classifier_rule_condition_value (warehouse_name, query_queue_name, classifier_name, condition_name, condition_value);
パラメーターの説明
名前
説明
warehouse_name
オプション。計算グループの名前。このパラメーターを設定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは、[計算グループ] インスタンスの場合にのみ設定します。
query_queue_name
必須。クエリキューの名前。
classifier_name
必須。マッチングルールを追加する分類子の名前。
condition_name と condition_value
必須。サポートされている条件プロパティは次のとおりです:
user_name:現在のアカウントの UID。
command_tag:リクエストタイプ。有効な値:INSERT、SELECT、UPDATE、DELETE。
COPY 操作の実行効率を向上させるため、Hologres は INSERT 操作を使用して COPY 操作を実装します。したがって、INSERT 操作の同時実行数が制限されると、COPY 操作の書き込み同時実行数も影響を受けます。
db_name:データベース名。
engine_type:リクエストによって使用されるエンジン。有効な値:HQE、PQE、SQE、HiveQE。Hologres V3.1.18 以降でこのプロパティを使用することを推奨します。
digest:SQL 指紋。詳細については、「SQL 指紋」をご参照ください。
application_name:クエリを開始したアプリケーション。このプロパティは Hologres V3.0.9 以降でのみサポートされています。
storage_mode:ストレージモード。有効な値:hot、cold。Hologres V3.1.18 または V3.1.8 以降でこのプロパティを使用することを推奨します。
write_table:クエリがデータを書き込むテーブル。フォーマットは
<db_name>.<schema_name>.<table_name>です。このプロパティは Hologres V3.1 以降でのみサポートされています。read_table:クエリがデータを読み取るテーブル。このプロパティは Hologres V3.1 以降でのみサポートされています。
分類子に複数のプロパティを設定でき、各プロパティには複数のマッチングルールを設定できます。Hologres V3.1.18 以降では、プロパティとルールの関係は次のとおりです:
分類子で複数のプロパティのマッチングルールを設定する場合:
異なるプロパティ間の関係は AND です。たとえば、分類子に `user_name` と `command_tag` の両方のマッチングルールが含まれている場合、クエリはこの分類子に割り当てられるために両方のルールを満たす必要があります。
プロパティ間に OR 関係を定義するには、複数の分類子を作成し、それらを同じクエリキューに割り当てる必要があります。
単一の分類子内で、単一のプロパティのマッチングルールには、次の 3 つの関係のいずれかがあります:
`user_name`、`command_tag`、`db_name`、`digest`、`application_name` などのプロパティの場合:
set_a をマッチングルールに設定されたプロパティ値のセットとします。たとえば、プロパティは user_name です。
set_b プロパティセットはクエリに対応し、1 つの値のみを含みます。
集合演算
set_b ⊆ set_aが満たされる場合、クエリはルールに一致します。
storage_mode:
set_a は、マッチングルールに設定されたプロパティ値のセットを表します。
set_b パラメーターは、クエリのプロパティセットを指定します。可能な値は "hot"、"cold"、または "hot, cold" です。
集合演算
set_a == set_bが true と評価された場合にのみ、クエリはルールに一致します。
`engine_type`、`write_table`、`read_table` などのプロパティの場合:
set_a を、read_table などのマッチングルールに設定されたプロパティ値のセットとします。
set_b はクエリのプロパティセットであり、無制限の数の値を含むことができます。たとえば、クエリは複数のテーブルから読み取ることができます。
集合演算が条件
(set_a ∩ set_b) != ∅を満たす場合、クエリはルールに一致します。
説明一度に設定できる条件プロパティは 1 つだけです。条件値で大文字と小文字が区別される場合は、二重引用符 ("") で囲む必要があります。
プロパティが複数の値に一致する必要がある場合は、値ごとに個別の SQL 文を実行する必要があります。たとえば、`command_tag` が `SELECT` または `INSERT` のいずれかであるリクエストに一致させるには、2 つの SQL 文を実行してルールを設定する必要があります。
例
以下の例では、計算グループインスタンスを使用します。汎用インスタンスの場合は、最初の入力パラメーターを削除できます。この例では、デフォルトの計算グループ `init_warehouse` のために `test_queue` という名前のクエリキューを作成します:
CALL hg_create_query_queue ('init_warehouse', 'test_queue');例 1:ユーザー `p4_123` または `p4_456` によって送信された場合、または SQL 指紋が `xxx` または `yyy` である場合、クエリは `test_queue` クエリキューに割り当てられます。
-- ユーザーと SQL 指紋プロパティの間には OR 関係が必要なため、2 つの分類子を設定する必要があります。 -- classifier_user という名前の分類子を作成し、test_queue クエリキューにアタッチします。 CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_user'); -- ユーザープロパティに基づいてマッチングルールを設定します。ユーザー "p4_123" または "p4_456" からのクエリがこの分類子にヒットする可能性があります。 CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_user', 'user_name', 'p4_123'); CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_user', 'user_name', 'p4_456'); -- classifier_digest という名前の分類子を作成し、test_queue クエリキューにアタッチします。 CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_digest'); -- SQL 指紋プロパティに基づいてマッチングルールを設定します。SQL 指紋が "xxx" または "yyy" のクエリがこの分類子にヒットする可能性があります。 CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_digest', 'digest', 'xxx'); CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_digest', 'digest', 'yyy');例 2:クエリが `xx_bi` アプリケーションによって開始され、コールドストレージとホットストレージの両方にアクセスする場合、クエリは `test_queue` クエリキューに割り当てられます。
-- アプリケーションとストレージモードプロパティの間には AND 関係が必要なため、両方のプロパティを同じ分類子内で定義します。 -- classifier_3 という名前の分類子を作成し、test_queue クエリキューにアタッチします。 CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_3'); -- アプリケーションプロパティに基づいてマッチングルールを設定します。 CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'application_name', 'xx_bi'); -- ストレージモードに基づいてマッチングルールを設定します。"hot" と "cold" の両方のルールを設定した場合、クエリはこのルールに一致するためにコールドストレージとホットストレージの両方にアクセスする必要があります。 CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'storage_mode', 'hot'); CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'storage_mode', 'cold');例 3:コールドストレージデータにアクセスするすべてのリクエストは、`test_queue` クエリキューに割り当てられます。
-- ストレージモードの値は完全に一致する必要があるため、「コールドストレージデータにアクセスする」リクエストは、次の 2 つの分類子に分割する必要があります。リクエストは、いずれか 1 つの分類子に入るだけで十分です。 -- classifier_cold_1 という名前の分類子を作成し、test_queue クエリキューにアタッチします。 CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_cold_1'); -- storage_mode が 'cold' のみのクエリがこのキューに入ります。 CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_cold_1', 'storage_mode', 'cold'); -- classifier_cold_2 という名前の分類子を作成し、test_queue クエリキューにアタッチします。 CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_cold_2'); -- storage_mode に 'hot' と 'cold' の両方が含まれるクエリがこのキューに入ります。 CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_cold_2', 'storage_mode', 'hot'); CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_cold_2', 'storage_mode', 'cold');例 4:テーブル `a` から読み取り、テーブル `b` に書き込むすべてのリクエストは、`test_queue` クエリキューに割り当てられます。
-- 読み取りテーブルと書き込みテーブルのプロパティの間には AND 関係が必要なため、両方のプロパティを同じ分類子内で定義します。 -- classifier_table という名前の分類子を作成し、test_queue クエリキューにアタッチします。 CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_table'); -- 読み取りテーブルに基づいてマッチングルールを設定します。リクエストは、他のテーブルから読み取るかどうかに関係なく、テーブル a からデータを読み取る場合にこのルールに一致します。 CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_table', 'read_table', 'db_name.schema_name.a'); -- 書き込みテーブルに基づいてマッチングルールを設定します。テーブル b に書き込むリクエストがこのルールに一致します。 CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_table', 'write_table', 'db_name.schema_name.b');
関連操作
大規模クエリ制御
インスタンスに対する大規模クエリの影響を効果的に制御するために、クエリキューを使用して実行期間を管理し、メモリ不足 (OOM) エラーを処理できます。指定された実行期間または OOM しきい値を超えるクエリについては、リクエストを終了するか、サーバーレスコンピューティングリソースを使用して再実行するかを選択できます。
Hologres V3.0 は `SELECT` クエリの再実行のみをサポートします。再実行中のクエリから `FETCH` を使用してデータを取得する場合、`FETCH` がデータを取得できなかった場合にのみ、設定されたクエリキュールールに基づいてクエリが再実行されます。このプロセスにより、結果の正確性が保証されます。
クエリの実際の実行には、`optimization_cost` (実行計画の生成)、`start_query_cost` (クエリの開始)、`get_next_cost` (クエリの実行) の 3 つの部分が含まれます。詳細については、「スロークエリログの表示と分析」をご参照ください。クエリキューの大規模クエリ制御機能は、`get_next_cost` 部分の期間のみを考慮します。リソースまたはロックの待機に費やされた時間は含まれません。
クエリ実行期間の制御
`big_query_execution_time_threshold_sec` パラメーターを設定して、実行期間のしきい値を秒 (s) 単位で設定できます。デフォルト値は -1 で、制限がないことを示します。値は [-1, 2147483647) の範囲内である必要があります。次の例は、実行期間に基づいてクエリを制御する方法を示しています:
シナリオ 1:実行期間を超えたクエリを終了する
`select_queue` キューに入るクエリは、現在のインスタンスのリソースを使用して実行されます。実行期間が 10 秒を超えると、クエリは自動的に終了します。
CALL hg_set_query_queue_property ('select_queue', 'big_query_execution_time_threshold_sec', '10');シナリオ 2:実行期間を超えたクエリを再実行する
`select_queue` キューに入るクエリは、現在のインスタンスのリソースを使用して実行されます。実行期間が 10 秒を超えると、クエリはインスタンスリソース上で自動的に終了し、サーバーレスコンピューティングリソースを使用して再実行されます。
CALL hg_set_query_queue_property ('select_queue', 'big_query_execution_time_threshold_sec', '10'); CALL hg_set_query_queue_property ('select_queue', 'enable_rerun_as_big_query_when_exceeded_execution_time_threshold', 'true'); CALL hg_set_query_queue_property ('select_queue', 'rerun_big_query_on_computing_resource', 'serverless');説明`enable_rerun_as_big_query_when_exceeded_execution_time_threshold`:実行期間を超えてリクエストが終了した後、他のリソースを使用して SQL リクエストを再実行するかどうかを指定します。デフォルト値は `false` です。
`rerun_big_query_on_computing_resource`:SQL リクエストの再実行に使用するサーバーレスコンピューティングリソースの名前を指定します。
OOM エラーを引き起こす大規模クエリの再実行
`select_queue` キューに入るクエリは、現在のインスタンスのリソースを使用して実行されます。クエリが OOM エラーを引き起こし、単一のワーカーで 10 GB を超えるメモリを占有した場合、クエリはサーバーレスコンピューティングリソースを使用して再実行されます。`big_query_mem_threshold_when_oom_gb` パラメーターは、OOM クエリのメモリしきい値を制御します。デフォルト値は -1 で、制限がないことを示します。値は [-1, 64) の範囲内である必要があります。次のコードは例です:
CALL hg_set_query_queue_property ('select_queue', 'big_query_mem_threshold_when_oom_gb', '10'); CALL hg_set_query_queue_property ('select_queue', 'enable_rerun_as_big_query_when_oom_exceeded_mem_threshold', 'true'); CALL hg_set_query_queue_property ('select_queue', 'rerun_big_query_on_computing_resource', 'serverless');
クエリキューの管理
クエリキューの削除
構文
汎用インスタンス
CALL hg_drop_query_queue (query_queue_name);コンピュートグループ インスタンス
CALL hg_drop_query_queue (warehouse_name, query_queue_name);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。計算グループの名前を指定します。このパラメーターを指定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは、[計算グループ] インスタンスにのみ適用されます。
query_queue_name:このパラメーターは必須です。クエリキューの名前を指定します。
例
汎用インスタンス
-- insert_queue クエリキューを削除します。 CALL hg_drop_query_queue ('insert_queue');コンピューティンググループ インスタンス
-- init_warehouse 計算グループで、insert_queue クエリキューを削除します。 CALL hg_drop_query_queue ('init_warehouse', 'insert_queue');
クエリキュープロパティの削除
構文
汎用 インスタンス
CALL hg_remove_query_queue_property (query_queue_name, property_key);コンピューティンググループ インスタンス
CALL hg_remove_query_queue_property (warehouse_name, query_queue_name, property_key);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。計算グループの名前を指定します。このパラメーターを指定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは、[計算グループ] インスタンスにのみ適用されます。
query_queue_name:このパラメーターは必須です。クエリキューの名前を指定します。
property_key:このパラメーターは必須です。プロパティの名前を指定します。サポートされているプロパティは `max_concurrency`、`max_queue_size`、`queue_timeout_ms` です。プロパティの詳細については、「クエリキュープロパティの設定」をご参照ください。
例
汎用インスタンス
-- insert_queue クエリキューの最大同時実行数プロパティを削除します。 CALL hg_remove_query_queue_property('insert_queue', 'max_concurrency'); -- insert_queue クエリキューの最大キューサイズプロパティを削除します。 CALL hg_remove_query_queue_property('insert_queue', 'max_queue_size'); -- insert_queue クエリキューの最大キュー時間プロパティを削除します。 CALL hg_remove_query_queue_property('insert_queue', 'queue_timeout_ms');コンピューティンググループ インスタンス
-- init_warehouse 計算グループで、insert_queue クエリキューの最大同時実行数プロパティを削除します。 CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'max_concurrency'); -- init_warehouse 計算グループで、insert_queue クエリキューの最大キューサイズ設定を削除します。 CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'max_queue_size'); -- init_warehouse 計算グループで、insert_queue クエリキューの最大キュー時間プロパティを削除します。 CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'queue_timeout_ms');
クエリキューのメタデータの表示
クエリキューのメタデータは、hologres.hg_query_queues システムテーブルに格納されます。主なフィールドは次の表で説明されています:
フィールド名 | フィールドタイプ | 説明 |
warehouse_id | INT | 計算グループ ID。 説明 [汎用]インスタンスの場合、warehouse_id フィールドの値は 0 です。 |
warehouse_name | TEXT | 計算グループの名前。 説明 [汎用] インスタンスでは、warehouse_name は空です。 |
query_queue_name | TEXT | クエリキューの名前。 |
property_key | TEXT | プロパティ名。 |
property_value | TEXT | プロパティ値。 |
クエリキュープロパティの設定
構文
汎用インスタンス
CALL hg_set_query_queue_property (query_queue_name, property_key, property_value);コンピュートグループ インスタンス
CALL hg_set_query_queue_property (warehouse_name, query_queue_name, property_key, property_value);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。クエリキュープロパティを設定する計算グループの名前を指定します。このパラメーターを指定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは、[計算グループ] インスタンスにのみ適用されます。
query_queue_name:このパラメーターは必須です。プロパティを設定するクエリキューの名前を指定します。
`property_key` と `property_value`:これらのパラメーターは必須です。サポートされているプロパティは次のとおりです:
`max_concurrency`:最大同時実行リクエスト数。デフォルト値は -1 で、同時実行数に制限がないことを示します。値は [-1, 2147483647) の範囲内である必要があります。
`max_queue_size`:キューに入れられるリクエストの最大数。このパラメーターは、キューに入れることができる SQL 文の最大数を指定します。デフォルト値は -1 で、キューサイズが無制限であることを示します。値は [-1, 2147483647) の範囲内である必要があります。
`queue_timeout_ms`:最大キュー期間 (ミリ秒単位)。クエリがこの値より長い期間キューで待機すると、クエリは自動的に停止されます。デフォルト値は -1 で、キュー期間に制限がないことを示します。値は [-1, 2147483647) の範囲内である必要があります。
例
汎用 インスタンス
-- insert_queue クエリキューの最大同時実行数を 15 に設定します。 CALL hg_set_query_queue_property('insert_queue', 'max_concurrency', '15'); -- insert_queue クエリキューの最大キューサイズを 15 に設定します。 CALL hg_set_query_queue_property('insert_queue', 'max_queue_size', '15'); -- insert_queue クエリキューの最大キュー時間を 3000 ms に設定します。 CALL hg_set_query_queue_property('insert_queue', 'queue_timeout_ms', '3000');コンピューティンググループ インスタンス
-- init_warehouse 計算グループで、insert_queue クエリキューの最大同時実行数を 15 に設定します。 CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'max_concurrency', '15'); -- init_warehouse 計算グループで、insert_queue クエリキューの最大キューサイズを 15 に設定します。 CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'max_queue_size', '15'); -- init_warehouse 計算グループで、insert_queue クエリキューの最大キュー時間を 3000 ms に設定します。 CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'queue_timeout_ms', '3000');
指定されたクエリキュー内のキューに入れられたリクエストのクリア
構文
汎用インスタンス
CALL hg_clear_query_queue (query_queue_name);コンピュートグループ:インスタンス
CALL hg_clear_query_queue (warehouse_name, query_queue_name);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。計算グループの名前を指定します。このパラメーターを指定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは、[計算グループ] インスタンスにのみ適用されます。
query_queue_name:このパラメーターは必須です。クエリキューの名前を指定します。
例
汎用 インスタンス
-- select_queue クエリキュー内のすべてのキューに入れられたリクエストをクリアします。 CALL hg_clear_query_queue ('select_queue');コンピュートグループ インスタンス
-- init_warehouse 計算グループで、select_queue クエリキュー内のすべてのキューに入れられたリクエストをクリアします。 CALL hg_clear_query_queue ('init_warehouse', 'select_queue');
分類子の管理
分類子の削除
構文
汎用 インスタンス
CALL hg_drop_classifier (query_queue_name, classifier_name);[コンピューティンググループ] インスタンス
CALL hg_drop_classifier (warehouse_name, query_queue_name, classifier_name);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。計算グループの名前を指定します。このパラメーターを指定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは、[計算グループ] インスタンスにのみ適用されます。
query_queue_name:このパラメーターは必須です。分類子を作成するクエリキューの名前を指定します。
classifier_name:このパラメーターは必須です。分類子の名前を指定します。
例
汎用インスタンス
-- insert_queue クエリキューで、classifier_insert 分類子を削除します。 CALL hg_drop_classifier ('insert_queue', 'classifier_insert');コンピューティンググループ インスタンス
-- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子を削除します。 CALL hg_drop_classifier ('init_warehouse', 'insert_queue', 'classifier_insert');
分類子プロパティの削除
構文
汎用インスタンス
CALL hg_remove_classifier_property (query_queue_name, classifier_name, property_key);コンピュートグループ インスタンス
CALL hg_remove_classifier_property (warehouse_name, query_queue_name, classifier_name, property_key);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。計算グループの名前を指定します。このパラメーターを指定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは、[計算グループ] インスタンスにのみ適用されます。
query_queue_name:このパラメーターは必須です。クエリキューの名前を指定します。
classifier_name:このパラメーターは必須です。分類子の名前を指定します。
property_key:このパラメーターは必須です。サポートされているプロパティは `priority` です。分類子プロパティの詳細については、「分類子プロパティの設定」をご参照ください。
例
汎用 インスタンス
-- insert_queue クエリキューで、classifier_insert 分類子の priority プロパティを削除します。 CALL hg_remove_classifier_property ('insert_queue', 'classifier_insert', 'priority');[コンピューティンググループ] インスタンス
-- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子の priority プロパティを削除します。 CALL hg_remove_classifier_property ('init_warehouse', 'insert_queue', 'classifier_insert', 'priority');
分類子プロパティの設定
構文
汎用インスタンス
CALL hg_set_classifier_property (query_queue_name, classifier_name, property_key, property_value);コンピューティンググループ インスタンス
CALL hg_set_classifier_property (warehouse_name, query_queue_name, classifier_name, property_key, property_value);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。計算グループの名前を指定します。このパラメーターを指定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは、[計算グループ] インスタンスにのみ適用されます。
query_queue_name:このパラメーターは必須です。クエリキューの名前を指定します。
classifier_name:このパラメーターは必須です。分類子の名前を指定します。
`property_key` と `property_value`:これらのパラメーターは必須です。サポートされているプロパティは次のとおりです:
`priority`:分類子のマッチング優先度。値が大きいほど優先度が高くなります。デフォルト値は 50 です。値は [1, 100] の範囲内である必要があります。
説明優先度の高い分類子が最初に照合されます。
複数の分類子が同じ優先度を持つ場合、それらはクエリキューと分類子名の辞書順に基づいて照合されます。辞書順で先に来る名前が最初に照合されます。たとえば、queue_a(classifier_1) は queue_b(classifier_1) よりも優先度が高くなります。
例
汎用インスタンス
-- insert_queue クエリキューで、classifier_insert 分類子の優先度を 30 に設定します。 CALL hg_set_classifier_property ('insert_queue', 'classifier_insert', 'priority', '30');コンピューティンググループインスタンス
-- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子の優先度を 30 に設定します。 CALL hg_set_classifier_property ('init_warehouse', 'insert_queue', 'classifier_insert','priority', '30');
分類子のマッチングルールの削除
分類子から特定のマッチングルールを削除する
構文
汎用 インスタンス
CALL hg_remove_classifier_rule_condition_value (query_queue_name, classifier_name, condition_name, condition_value);コンピューティンググループ インスタンス
CALL hg_remove_classifier_rule_condition_value (warehouse_name, query_queue_name, classifier_name, condition_name, condition_value);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。計算グループの名前を指定します。このパラメーターを指定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは、[計算グループ] インスタンスに対してのみ設定できます。
query_queue_name:このパラメーターは必須です。クエリキューの名前を指定します。
classifier_name:このパラメーターは必須です。分類子の名前を指定します。
`condition_name` と `condition_value`:これらのパラメーターは必須です。削除する条件プロパティの名前と値を指定します。サポートされている条件プロパティは `user_name`、`command_tag`、`db_name`、`engine_type`、`digest`、`storage_mode` です。分類子のマッチングルールの条件プロパティの詳細については、「分類子のマッチングルールの設定」をご参照ください。
例
汎用インスタンス
-- insert_queue クエリキューで、classifier_insert 分類子から command_tag が INSERT であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'command_tag', 'INSERT'); -- insert_queue クエリキューで、classifier_insert 分類子から user_name が p4_12345 であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'user_name', 'p4_12345'); -- insert_queue クエリキューで、classifier_insert 分類子から db_name が prd_db であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'db_name', 'prd_db'); -- insert_queue クエリキューで、classifier_insert 分類子から engine_type が HQE であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'engine_type', 'HQE'); -- insert_queue クエリキューで、classifier_insert 分類子から digest が md5edb3161000a003799a5d3f2656b70b4c であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'digest', 'md5edb3161000a003799a5d3f2656b70b4c'); -- insert_queue クエリキューで、classifier_insert 分類子から storage_mode が hot であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'storage_mode', 'hot');コンピューティンググループ インスタンス
-- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から command_tag が INSERT であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'command_tag', 'INSERT'); -- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から user_name が p4_12345 であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'user_name', 'p4_12345'); -- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から db_name が prd_db であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'db_name', 'prd_db'); -- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から engine_type が HQE であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'engine_type', 'HQE'); -- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から digest が md5edb3161000a003799a5d3f2656b70b4c であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'digest', 'md5edb3161000a003799a5d3f2656b70b4c'); -- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から storage_mode が hot であるマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'storage_mode', 'hot');
分類子から特定のプロパティのすべてのマッチングルールを削除する
構文
汎用 インスタンス
CALL hg_remove_classifier_rule_condition (query_queue_name, classifier_name, condition_name);コンピューティンググループ インスタンス
CALL hg_remove_classifier_rule_condition (warehouse_name, query_queue_name, classifier_name, condition_name);
パラメーターの説明
warehouse_name:このパラメーターはオプションです。計算グループの名前を指定します。このパラメーターを指定しない場合、現在の接続の計算グループが使用されます。
説明このパラメーターは[計算グループ] インスタンスに固有です。
query_queue_name:このパラメーターは必須です。クエリキューの名前を指定します。
classifier_name:このパラメーターは必須です。分類子の名前を指定します。
condition_name:このパラメーターは必須です。ルールを削除する条件プロパティの名前を指定します。サポートされている条件プロパティは `user_name`、`command_tag`、`db_name`、`engine_type`、`digest`、`storage_mode` です。分類子のマッチングルールの条件プロパティの詳細については、「分類子のマッチングルールの設定」をご参照ください。
例
汎用インスタンス
-- insert_queue クエリキューで、classifier_insert 分類子から command_tag に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'command_tag'); -- insert_queue クエリキューで、classifier_insert 分類子から user_name に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'user_name'); -- insert_queue クエリキューで、classifier_insert 分類子から db_name に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'db_name'); -- insert_queue クエリキューで、classifier_insert 分類子から engine_type に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'engine_type'); -- insert_queue クエリキューで、classifier_insert 分類子から digest に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'digest'); -- insert_queue クエリキューで、classifier_insert 分類子から storage_mode に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'storage_mode');[コンピューティンググループ] インスタンス
-- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から command_tag に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'command_tag'); -- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から user_name に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'user_name'); -- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から db_name に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'db_name'); -- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から engine_type に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'engine_type'); -- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から digest に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'digest'); -- init_warehouse 計算グループの insert_queue クエリキューで、classifier_insert 分類子から storage_mode に関連するすべてのマッチングルールを削除します。 CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'storage_mode');
分類子メタデータの表示
分類子のメタデータは、hologres.hg_classifiers システムテーブルに格納されます。主なフィールドは次の表で説明されています:
フィールド | フィールドタイプ | 説明 |
warehouse_id | INT | 計算グループ ID。 説明 [汎用] インスタンスの場合、warehouse_id フィールドの値は 0 です。 |
warehouse_name | TEXT | 計算グループの名前。 説明 [汎用] インスタンスの場合、warehouse_name は空です。 |
query_queue_name | TEXT | クエリキューの名前。 |
classifier_name | TEXT | 分類子の名前。 |
property_key | TEXT | プロパティ名。 |
property_value | TEXT | プロパティ値。 |
サーバーレスコンピューティングリソースを使用したクエリキューでのクエリ実行
Hologres V3.0.10 以降では、特定のクエリキュー内のすべてのクエリをサーバーレスコンピューティングリソースを使用して実行するように指定できます。これを設定すると、キュー内のクエリは、リクエストの順序と設定された優先度に基づいて、サーバーレスリソースに実行を要求します。これらのクエリは、クエリキューの同時実行設定やキューイングメカニズムの影響を受けなくなります。詳細については、「サーバーレスコンピューティング利用ガイド」をご参照ください。
ご利用のインスタンスが配置されているゾーンでサーバーレスコンピューティングがサポートされていない場合、クエリは代わりに現在のインスタンスのリソースを使用して実行されます。
汎用インスタンス
構文
-- ターゲットキュー内のすべてのクエリをサーバーレスリソースで実行するように設定します。 CALL hg_set_query_queue_property('<query_queue_name>', 'computing_resource', 'serverless'); -- (オプション) サーバーレスリソースを使用する際のターゲットキュー内のクエリの優先度を設定します。値は 1 から 5 までの整数です。デフォルト値は 3 です。 CALL hg_set_query_queue_property('<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');パラメーターの説明
query_queue_name:このパラメーターは必須です。クエリキューの名前を指定します。
priority:優先度。デフォルト値は 3 です。値は
[1, 5]の範囲内である必要があります。
例
-- ターゲットキュー内のすべてのクエリをサーバーレスリソースで実行するように設定します。 CALL hg_set_query_queue_property('insert_queue', 'computing_resource', 'serverless'); -- サーバーレスリソースを使用する際のターゲットキュー内のクエリの優先度を 2 に設定します。 CALL hg_set_query_queue_property('insert_queue', 'query_priority_when_using_serverless_computing', '2');
計算グループインスタンス
構文
-- ターゲットキュー内のすべてのクエリをサーバーレスリソースで実行するように設定します。 CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'computing_resource', 'serverless'); -- (オプション) サーバーレスリソースを使用する際のターゲットキュー内のクエリの優先度を設定します。値は 1 から 5 までの整数です。デフォルト値は 3 です。 CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');パラメーターの説明
warehouse_name:このパラメーターは必須です。計算グループの名前を指定します。
query_queue_name:このパラメーターは必須です。クエリキューの名前を指定します。
priority:このパラメーターは必須です。優先度を指定します。デフォルト値は 3 です。値は
[1, 5]の範囲内である必要があります。
例
-- ターゲットキュー内のすべてのクエリをサーバーレスリソースで実行するように設定します。 CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'computing_resource', 'serverless'); -- サーバーレスリソースを使用する際のターゲットキュー内のクエリの優先度を 2 に設定します。 CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'query_priority_when_using_serverless_computing', '2');
利用シーン
特定の SQL 文で使用されるクエリキューの表示
EXPLAIN を実行して、特定の SQL 文で使用されるクエリキューを表示できます。結果の `Query Queue` フィールドには、使用されたクエリキューが表示されます。次のコードは例です。
-- 同時実行数 10、最大キューサイズ 20 のクエリキューを作成します。
CALL hg_create_query_queue ('select_queue', 10, 20);
-- 分類子を作成し、command_tag プロパティをアタッチします。
CALL hg_create_classifier ('select_queue', 'classifier_1');
CALL hg_set_classifier_rule_condition_value ('select_queue', 'classifier_1', 'command_tag', 'select');
-- EXPLAIN ANALYZE を使用して、クエリが一致する分類子とクエリキューを表示します。
EXPLAIN ANALYZE SELECT * FROM hg_stat_activity;次の結果が返されます。
QUERY PLAN
Gather (cost=0.00..14.96 rows=1000 width=408)
[4:1 id=100003 dop=1 time=16/16/16ms rows=142(142/142/142) mem=43/43/43KB open=0/0/0ms get_next=16/16/16ms]
-> Forward (cost=0.00..12.19 rows=1000 width=408)
[0:4 id=100002 dop=4 time=16/8/5ms rows=142(39/35/33) mem=6/6/6KB open=16/8/5ms get_next=0/0/0ms scan_rows=142(39/35/33)]
-> ExecuteExternalSQL on PQE (cost=0.00..10.04 rows=0 width=408)
" External SQL: SELECT "datid" AS c_d2adb610_0, "datname" AS c_d2adb760_1, "pid" AS c_d2adb8a0_2, "usesysid" AS c_d2adba10_3, "usename" AS c_d2adbb60_4, "application_name" AS c_d2adbd10_5, "client_addr" AS c_d2adbe80_6, "client_hostname" AS c_d2df1020_7, "client_port" AS c_d2df1190_8, "backend_start" AS c_d2df1300_9, "xact_start" AS c_d2df1470_10, "query_start" AS c_d2df15e0_11, "state_change" AS c_d2df1750_12, "wait_event_type" AS c_d2df18c0_13, "wait_event" AS c_d2df1a30_14, "state" AS c_d2df1b80_15, "backend_xid" AS c_d2df1cf0_16, "backend_xmin" AS c_d2df1e60_17, "query" AS c_d2df1fb0_18, "backend_type" AS c_d2df2120_19, "query_id" AS c_d2df2290_20, "transaction_id" AS c_d2df2400_21, "extend_info" AS c_d2df2570_22, "running_info" AS c_d2df26e0_23 FROM pg_catalog."hg_stat_activity""
Query id:[1001002491453065719]
Query Queue: init_warehouse.select_queue.classifier_1アクティブなクエリで SQL 文が使用するクエリキューの表示
次の SQL 文を実行して、アクティブなクエリ内の SQL 文に関する情報 (クエリキュー名、現在のステータス、キュー時間など) を表示できます。
SELECT
running_info::json -> 'current_stage' ->> 'stage_name' AS stage_name,
running_info::json -> 'current_stage' ->> 'queue_time_ms' AS queue_time_ms,
running_info::json ->> 'query_queue' AS query_queue,
*
FROM
hg_stat_activity;クエリログで SQL 文が使用するクエリキューの表示
次の SQL 文を実行して、クエリログ内の SQL 文のクエリキュー、現在のステータス、およびキュー時間を表示できます。`query_detail` フィールドには、SQL 文が使用したクエリキューが記録されます。`hologres.hg_query_log` システムテーブルの詳細については、「query_log テーブルの表示」をご参照ください。
SELECT * FROM hologres.hg_query_log WHERE query_detail like '%query_queue = <warehouse_name>.<queue_name>%';--計算グループインスタンスの場合のみ warehouse_name パラメーターを設定します。上記の SQL 文によって返される extended_info フィールドには、次の情報が含まれます:
serverless_computing_source:サーバーレスコンピューティングリソースを使用して実行された SQL 文のソースを示します。有効な値は次のとおりです:user_submit:クエリキュー機能とは無関係に、サーバーレスリソースで実行するように指定された SQL 文。query_queue:指定されたクエリキュー内のすべての SQL 文は、サーバーレスリソースによって実行されます。query_queue_rerun:クエリキューの大規模クエリ制御機能によって、サーバーレスリソースで自動的に再実行された SQL 文。
query_id_of_triggered_rerun:このフィールドは、`serverless_computing_source` が `query_queue_rerun` の場合にのみ存在します。このフィールドは、再実行された SQL 文の元のクエリ ID を示します。
異なるマッチングルールを持つクエリキューの作成
例 1:`INSERT` リクエストのマッチングルールを持つクエリキューを作成します。次のコードは例です。
クエリキューが作成されると、すべての `INSERT` リクエストは `classifier_1` 分類子に一致し、`insert_queue` クエリキューに割り当てられます。
-- 同時実行数 10、最大キューサイズ 20 のクエリキューを作成します。 CALL hg_create_query_queue ('insert_queue', 10, 20); -- 分類子を作成し、command_tag プロパティをアタッチします。 CALL hg_create_classifier ('insert_queue', 'classifier_1'); CALL hg_set_classifier_rule_condition_value ('insert_queue', 'classifier_1', 'command_tag', 'INSERT');ユーザー `p4_123` と `p4_345` のマッチングルールを持つクエリキューを作成します。次のコードは例です。
クエリキューが作成されると、ユーザー `p4_123` と `p4_345` によって送信された SQL リクエストは `classifier_2` 分類子に一致し、`user_queue` クエリキューに割り当てられます。
-- 同時実行数 3、最大キューサイズ無制限のクエリキューを作成します。 CALL hg_create_query_queue ('user_queue', 3); CALL hg_set_query_queue_property('user_queue','max_queue_size', -1); -- 分類子を作成し、user_name マッチングルールを設定します。 CALL hg_create_classifier ('user_queue', 'classifier_2'); CALL hg_set_classifier_rule_condition_value ('user_queue', 'classifier_2', 'user_name', 'p4_123'); CALL hg_set_classifier_rule_condition_value ('user_queue', 'classifier_2', 'user_name', 'p4_345');説明カスタムユーザーアカウントを指定する場合は、その名前を二重引用符 ("") で囲む必要があります。例:
CALL hg_set_classifier_rule_condition_value ('user_queue', 'classifier_2', 'user_name', '"BASIC$xxx"');。`test` および `postgres` データベースのマッチングルールを持つクエリキューを作成します。次のコードは例です。
クエリキューが作成されると、`test` および `postgres` データベースに関連する SQL リクエストは `classifier_3` 分類子に一致し、`db_queue` クエリキューに割り当てられます。
-- 同時実行数 5 のクエリキューを作成します。 CALL hg_create_query_queue ('db_queue', 5); -- 最大キュー時間を 600000 ms に設定します。クエリがこの時間より長く待機すると、エラーが報告されます。 CALL hg_set_query_queue_property ('db_queue', 'queue_timeout_ms', '600000'); -- 分類子を作成し、db_name プロパティをアタッチします。 CALL hg_create_classifier ('db_queue', 'classifier_3'); CALL hg_set_classifier_rule_condition_value ('db_queue', 'classifier_3', 'db_name', 'test'); CALL hg_set_classifier_rule_condition_value ('db_queue', 'classifier_3', 'db_name', 'postgres');`HQE` エンジンタイプのマッチングルールを持つクエリキューを作成します。次のコードは例です。
クエリキューが作成されると、`HQE` エンジンに関連する SQL リクエストは `classifier_4` 分類子に一致し、`hqe_queue` クエリキューに割り当てられます。
-- 同時実行数 10 のクエリキューを作成します。 CALL hg_create_query_queue ('hqe_queue', 10); -- 分類子を作成し、engine_type プロパティをアタッチします。 CALL hg_create_classifier ('hqe_queue', 'classifier_4'); CALL hg_set_classifier_rule_condition_value ('hqe_queue', 'classifier_4', 'engine_type', 'HQE');
すべてのタスクのブロック (極端なシナリオ)
`insert_queue` クエリキューの同時実行数とキューサイズを 0 に設定できます。次のコードは例です。
CALL hg_set_query_queue_property ('insert_queue', 'max_concurrency', '0');
CALL hg_set_query_queue_property ('insert_queue', 'max_queue_size', '0');