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

PolarDB:DOPポリシー

最終更新日:Jun 05, 2024

PolarDBは複数のポリシーをサポートしており、グローバルまたは単一のクエリに対して並列処理度 (DOP) を制御し、リソースの読み込みが適切な場合に適切なDOP値が選択されるようにします。

並列クエリ待ち行列ポリシーのパラメーター

max_parallel_workersは、1つのノード内の並列ワーカーの最大数を指定します。 並列ワーカーの数がmax_parallel_workers値を超えると、新しい並列クエリがキューに入り、待機します。 キュースケジューリングは、先入れ先出し (FIFO) ポリシーを使用します。

queuing_parallel_degree_limitは、キューで許可される最大DOPを指定します。 キュー内の並列ワーカーの総数がqueuing_parallel_degree_limit値を超えると、キューは満杯と見なされ、後続のクエリには順次実行が使用されます。

pq_max_queuing_timeは、キュー内の最大待ち時間を指定します。 キュー内の待ち時間が指定値を超えた場合、キューは直ちに削除され、シーケンシャル実行が使用されます。

パラメーター

Parameters

レベル

説明

max_parallel_ワーカー

グローバル

並列ワーカーの最大数。 並列ワーカーの数が指定された値を超えると、新しい並列クエリがキューに入り、待機します。

  • 有効な値: 1 ~ 10000

  • デフォルト値はCPUコア数の2倍です。

queuing_parallel_degree_limit

グローバル

一度にキューに入ることができる並列クエリのDOP値の最大合計。 指定された値を超えると、並列クエリは禁止され、シーケンシャル実行が使用されます。

  • 有効な値: 0 ~ 10000

  • デフォルト値: 64。

pq_max_queuing_time

グローバル、セッション

キュー内の最大待機時間。 キューの待ち時間が指定値を超えた場合は, シーケンシャル実行が使用されます。 単位:ミリ秒。

  • 有効な値: 0 ~ 18446744073709551615

  • デフォルト値:200

統計変数:

変数

レベル

説明

PQ_refused_over_total_workers

グローバルとセッション

ワーカーの総数の制限のために並列に実行されないクエリの数。

PQ_refused_over_max_queuing_time

グローバルとセッション

キュータイムアウトのためにエラスティック並列クエリが失敗したクエリの数。

Total_running_parallel_workers

グローバル

実行中の並列ワーカーの数。

アダプティブDOP設定

PolarDBは、クエリのコストと現在のリソース負荷に基づいたアダプティブDOP設定をサポートします。これには、シングルノードのエラスティック並列クエリのDOPやマルチノードのエラスティック並列クエリのスケジューリングポリシーが含まれます。 下表に、各パラメーターを説明します。

パラメーター

レベル

説明

parallel_degree_ポリシー

グローバル

個々のクエリのDOPポリシー。 有効な値:

  • TYPICAL: PolarDBは、CPU使用率などのデータベースの負荷に関係なく、DOPをmax_parallel_degreeと同じ値に設定します。

  • AUTO: PolarDBは、CPU使用率などのデータベース負荷に基づいてエラスティックパラレルクエリ機能を有効または無効にし、クエリコストに基づいてDOPを選択します。

  • REPLICA_AUTO (デフォルト): 読み取り専用ノードのみが、CPU使用率などのデータベース負荷に基づいてエラスティック並列クエリ機能を有効にするかどうかを決定し、クエリコストに基づいてDOPを選択します。 プライマリノードはエラスティック並列クエリを実行しません。

parallel_workers_ポリシー

セッション

弾性並列クエリポリシー。The elastic parallel query policy. 有効な値:

  • LOCAL: 単一ノードのエラスティック並列クエリ。

  • AUTO: エラスティック並列クエリ機能が有効になっています。 タスクスケジューリングは、クラスタ内のノードのリアルタイム負荷に基づいて実行されます。 ノードのコンピューティングリソースが不十分な場合、クラスタ内の他のノードのアイドルリソースをスケジューリングに使用できます。 クエリコストが指定されたしきい値を超えると、マルチノードエラスティック並列クエリが有効になります。

  • MULTI_NODES: マルチノード弾性並列クエリを強制します。 最大DOPはノードの数と共に増加する。 この値は、大量のデータに対する分析クエリに適しています。

システムリソースの制限

parallel_degree_policyパラメーターがAUTOに設定されている場合、PolarDBは、データベースのCPU使用率、メモリ使用率、またはIOPS値に基づいて並列クエリを有効または無効にします。 PolarDBは、並列クエリのコストに基づいてDOPも設定します。

パラメーター

レベル

説明

loose_auto_dop_cpu_pct_hwm

グローバル

  • 有効値: 0~100。

  • デフォルト値: 70。

CPU使用率のしきい値。 CPU使用率がしきい値を超えると、PolarDBは並列クエリを無効にします。

loose_auto_dop_mem_pct_hwm

  • 有効値: 0~100。

  • デフォルト値: 90。

メモリ使用量のしきい値。 メモリ使用量がしきい値を超えると、PolarDBは並列クエリを無効にします。

loose_auto_dop_iops_pct_hwm

  • 値の値: 0 ~ 100

  • デフォルト値: 80。

IOPS使用率のしきい値。 IOPS使用量がしきい値を超えると、PolarDBは並列クエリを無効にします。

loose_auto_dop_low_degree_コスト

  • 値: 0〜18446744073709551615。

  • デフォルト値: 500000

DOPを自動的に設定するために使用されるポリシー。 並列クエリを有効にすると、PolarDBは次のルールに基づいてDOPを設定します。

  • オプティマイザがシリアルクエリのコストがこのパラメータの値よりも低いと推定した場合、DOPは2に設定されます。

  • シリアルクエリのコストがこのパラメーターの値以上であるとオプティマイザが推定した場合、DOPはmax_parallel_degreeと同じ値に設定されます。

説明

このパラメーターは、PolarDBが並列クエリを有効にした後にのみDOPを設定するために使用されます。 並列クエリの有効化または無効化には使用されません。