AnalyticDB for MySQL の対話型リソースグループは、クエリの同時実行数をよりきめ細かく制御するための優先度付きキューを提供します。各リソースグループには、LOWEST、LOW、NORMAL、HIGH という名前の優先度付きキューのセットがあります。クエリの優先度を設定して、クエリを異なる優先度付きキューに振り分けることができます。また、各キューの同時実行数を設定することもできます。このトピックでは、クエリの優先度とキューの同時実行数を設定する方法について説明します。
前提条件
クラスターのバージョンが 3.1.6.3 以降であること。
説明AnalyticDB for MySQL クラスターのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、クラスター情報 ページの 構成情報 セクションに移動します。
リソースグループは、XIHE エンジンを使用する対話型リソースグループである必要があります。
機能概要
クエリの優先度
各対話型リソースグループには、LOWEST、LOW、NORMAL、HIGH の 4 つの優先度付きキューのセットがあります。デフォルトでは、通常の SELECT クエリは NORMAL キューに入ります。INSERT INTO SELECT、DELETE SELECT、INSERT OVERWRITE SELECT などの他の抽出・変換・書き出し (ETL) クエリは、LOWEST キューに入ります。各クエリに優先度を設定して、クエリを異なるキューに振り分けることができます。同じ優先度付きキュー内では、優先度の値が高いクエリが先に実行されます。たとえば、query_priority=8 のクエリは、query_priority=6 のクエリよりも先に実行されます。
各キューの優先度の範囲は次のとおりです。
キューの同時実行数
各優先度付きキューの最大同時実行クエリ数と最大キューイングクエリ数を設定できます。
優先度付きキューで実行中のクエリ数が最大同時実行クエリ数に達すると、新しいクエリはキューに入れられます。
キューイングされたクエリ数が最大数に達すると、新しいクエリは拒否されます。
実行中のクエリが完了すると、最も優先度の高いキューイングされたクエリが次に実行されます。複数のキューイングされたクエリが同じ優先度を持つ場合、先入れ先出し (FIFO) 順に実行されます。
クエリの優先度を有効にする
クラスターバージョン 3.1.8.2 以降の場合、クエリの優先度はデフォルトで有効になっています。
バージョン 3.1.6.3 から 3.1.8.2 より前のバージョンのクラスターの場合、次の文を実行して手動でクエリの優先度を有効にする必要があります:
SET ADB_CONFIG XIHE_ENV_QUERY_PRIORITY_QUEUE_ENABLE=true;
クエリの優先度を設定する
ETL クエリのデフォルトの優先度は LOWEST (値: 5) です。通常の SELECT クエリのデフォルトの優先度は NORMAL (値: 25) です。クエリの優先度を上げるまたは下げるには、次のいずれかのメソッドを使用できます。
注意
INSERT INTO ... VALUES(...) 文はクエリの優先度の設定をサポートしていません。
メソッド
Workload Manager を使用して HINT を自動的に追加することをお勧めします。詳細については、「クエリの優先度」をご参照ください。
クエリ文の前に次の HINT を追加して、クエリの優先度を設定します。
/*+ query_priority=<Priority value>*/ select_statement優先度の値: 0 から 39 までの整数を指定できます。数値が大きいほど優先度が高くなります。LOWEST、LOW、NORMAL、HIGH のいずれかの文字列値を使用することもできます。これらの文字列は、それぞれ整数値 5、15、25、35 に対応します。
例
優先度を HIGH に設定して、クエリを HIGH キューに送信します。
/*+ query_priority=HIGH*/ SELECT * FROM test_table;優先度を 35 に設定して、クエリを HIGH キューに送信します。
/*+ query_priority=35*/ SELECT * FROM test_table;
キューの同時実行数を設定する
対話型リソースグループの優先度付きキューの最大同時実行クエリ数と最大キューサイズを設定できます。これらの設定をグローバルに、または単一のリソースグループに対して設定できます。
メソッド
優先度付きキューのグローバルな同時実行数を設定するには、次の文を実行します:
SET ADB_CONFIG <concurrency-parameter> = <value>。特定のリソースグループの優先度付きキューの同時実行数を設定するには、次の文を実行します:
SET ADB_CONFIG <resource_group_name>.<concurrency_parameter> = <value>。
単一のリソースグループに対する優先度付きキューの同時実行数の設定は、予約モードのデータウェアハウス クラスターではサポートされていません。
同時実行数パラメーターのリスト
優先度付きキューのパラメーター値は、クラスターの合計キューサイズではなく、単一のフロントノードのキューサイズを表します。クラスターの合計キューサイズは、単一ノードのキューサイズにフロントノードの数を掛けたものです。数式は次のとおりです: クラスターの合計キューサイズ = (単一ノードのキューサイズ) × (フロントノードの数)。
優先度付きキューのパラメーター構成は、すべてのフロントノードで同時に有効になります。
フロントノードは FrontNode リソースです。詳細については、「アクセスレイヤーの高可用性」をご参照ください。
キュー名 | 構成パラメーター | デフォルト値 | 説明 (単一のリソースグループの場合) |
LOWEST (ETL) キュー | XIHE_ENV_QUERY_ETL_MAX_CONCURRENT_SIZE | 20 | 単一のフロントノード上の LOWEST キューの最大同時実行クエリ数は 20 です。 |
XIHE_ENV_QUERY_ETL_MAX_QUEUED_SIZE | 200 | 単一のフロントノード上の LOWEST キューの最大キューイングクエリ数は 200 です。 | |
LOW キュー | XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE | 20 | 単一のフロントノード上の LOW キューの最大同時実行クエリ数は 20 です。 |
XIHE_ENV_QUERY_LOW_PRIORITY_MAX_QUEUED_SIZE | 200 | 単一のフロントノード上の LOW キューの最大キューイングクエリ数は 200 です。 | |
NORMAL キュー | XIHE_ENV_QUERY_NORMAL_MAX_CONCURRENT_SIZE | 20 | 単一のフロントノード上の NORMAL キューの最大同時実行クエリ数は 20 です。 |
XIHE_ENV_QUERY_NORMAL_MAX_QUEUED_SIZE | 200 | 単一のフロントノード上の NORMAL キューの最大キューイングクエリ数は 200 です。 | |
HIGH キュー | XIHE_ENV_QUERY_HIGH_MAX_CONCURRENT_SIZE | 40 | 単一のフロントノード上の HIGH キューの最大同時実行クエリ数は 40 です。 |
XIHE_ENV_QUERY_HIGH_MAX_QUEUED_SIZE | 400 | 単一のフロントノード上の HIGH キューの最大キューイングクエリ数は 400 です。 |
例
クラスター内のすべてのリソースグループに対して、LOW キューの最大同時実行クエリ数を 5 に設定します。
SET ADB_CONFIG XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE = 5;`rg1` リソースグループに対して、LOW キューの最大同時実行クエリ数を 5 に設定します。
SET ADB_CONFIG rg1.XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE = 5;
キューの同時実行数を表示する
実行中のクエリの最大数とキューイングされたクエリの最大数のグローバル設定を表示するには、次の文を実行します:
SHOW ADB_CONFIG KEY=<concurrency_parameter>;。特定のリソースグループの実行中のクエリの最大数とキューイングされたクエリの最大数を表示するには、次の文を実行します:
SHOW ADB_CONFIG KEY='<resource group name>.<concurrency parameter>';。