すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB for MySQL:対話型リソースグループの優先キューと同時実行制御

最終更新日:Jun 07, 2024

AnalyticDB for MySQL Data Lakehouse Edition (V3.0)Data Warehouse Edition (V3.0) は、リソースグループの優先キュー機能を提供し、同時クエリの数を正確に制御できます。 各リソースグループは、LOWEST、LOW、NORMAL、およびHIGHキューである優先度キューのセットを有する。 クエリの優先度を設定して、クエリが異なる優先度キューに入ることを許可できます。 キューの同時クエリ数を設定することもできます。 このトピックでは、キューのクエリ優先度と同時クエリ数を設定する方法について説明します。

前提条件

V3.1.6.3以降のAnalyticDB for MySQLクラスターが作成されます。

説明

クラスターのマイナーバージョンをクエリする方法については、AnalyticDB for MySQLクラスターのバージョンを照会するにはどうすればよいですか? クラスターのマイナーバージョンを更新するには、テクニカルサポートにお問い合わせください。

概要

各リソースグループは、LOWEST、LOW、NORMAL、およびHIGHキューである優先度キューのセットを有する。 デフォルトでは、一般的なSELECTクエリがNORMALキューに入り、INSERT INTO SELECTDELETE SELECTINSERT OVERWRITE INTO SELECTクエリなどのextract-transform-load (ETL) クエリがLOWESTキューに入ります。 クエリの優先度を設定して、クエリが異なる優先度キューに入ることを許可できます。 各キューでは、優先度の高いクエリが優先的に実行される。 各優先度キューの優先度範囲を次の図に示します。优先级队列

優先度キューごとに、実行できるクエリの最大数とキューイングできるクエリの最大数を設定できます。

  • 優先度キューで実行されているクエリの数が、実行可能なクエリの最大数以上の場合、新しいクエリはキュー状態になります。

  • 優先度キュー内のキューに入れられたクエリの数が、キューに入れることができるクエリの最大数と実行できるクエリの最大数の合計以上の場合、新しいクエリは拒否されます。

  • クエリが実行された後、最高の優先順位を持つキューに入れられたクエリは実行状態に入ります。 2つのクエリが同じ優先度を有する場合、それらは先入れ先出し (FIFO) 順序で実行される。

クエリの優先キュー機能の有効化

  • デフォルトでは、優先キュー機能はV3.1.8.2以降のAnalyticDB for MySQLクラスターで有効になっています。

  • V3.1.6.3〜V3.1.8.1のAnalyticDB for MySQLクラスターの優先キュー機能を有効にするには、次のステートメントを実行します。

SET ADB_CONFIG XIHE_ENV_QUERY_PRIORITY_QUEUE_ENABLE=true;
説明

クラスターのマイナーバージョンをクエリする方法については、AnalyticDB for MySQLクラスターのバージョンを照会するにはどうすればよいですか? クラスターのマイナーバージョンを更新するには、テクニカルサポートにお問い合わせください。

クエリ優先度の設定

デフォルトでは、優先度レベルの値は、ETLクエリの場合はLOWEST (5) 、一般的なSELECTクエリの場合はNORMAL (25) です。 次のセクションでは、クエリの優先度を設定する方法について説明します。

使用上の注意

INSERT INTOの優先順位を設定できません... VALUES(...) ステートメント。

設定方法

  • (推奨) WLMステートメントを実行して、クエリにヒントを追加します。 詳細については、「WLM」をご参照ください。

  • 次のステートメントを実行して、クエリにヒントを追加します。

    /* + query_priority=<priority level>*/ select_statement

    priority level: 値は0から39までの整数です。 より大きな値は、より高い優先度を指定する。 値は、整数5、15、25、および35に相当するLOWEST、LOW、NORMAL、およびHIGHを含む文字列にすることもできます。

  • クエリの優先度を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>

    重要

    リソースグループ内のキューの同時クエリ数は、[Data Warehouse Edition (V3.0)] クラスターが32コア以上のCluster Editionおよび [Data Lakehouse Edition (V3.0)] クラスターに対してのみ設定できます。

同時実行パラメーター

説明
  • priority queueパラメータの値は、フロントエンドノードのキューサイズを指定します。 クラスターの合計キューサイズは、次の式を使用して計算できます。クラスターの合計キューサイズ=キューのサイズ × フロントエンドノードの数。

  • 優先キューパラメーターの設定は、すべてのフロントエンドノードに対して同時に有効になります。

  • フロントエンドノードの詳細については、「アクセス層の高可用性」をご参照ください。

キュー

パラメーター

デフォルト値

リソースグループの説明

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です。

通常のキュー

XIHE_ENV_QUERY_NORMAL_MAX_CONCURRENT_SIZE

20

フロントエンドノードのNORMALキューに対して実行できるクエリの最大数は20です。

XIHE_ENV_QUERY_NORMAL_MAX_QUEUED_SIZE

200

フロントエンドノードのNORMALキューにキューイングできるクエリの最大数は200です。

ハイキュー

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>;