PolarDB は、並列度 (DOP) をグローバルまたはクエリごとに制御し、リソース負荷が高い場合に順次実行に適切にフォールバックするための複数のポリシーをサポートしています。
PolarDB コンソール内のすべてのクラスターパラメーターには、MySQL 設定ファイルの互換性プレフィックスである loose_ が含まれています。コンソールでパラメーターを変更する際は、loose_ プレフィックスを含むパラメーター名を使用してください。
仕組み
パラレルクエリが到着すると、PolarDB は 3 つのレイヤーで制御を適用します:
キューイングポリシー — 実行中のパラレルワーカーの総数が
loose_max_parallel_workersに達した場合、新しいパラレルクエリはすぐに実行されず、先入れ先出し (FIFO) キューに入ります。キュー容量制限 — キューに入れられたクエリの合計 DOP が
loose_queuing_parallel_degree_limitに達した場合、キューは満杯と見なされ、後続のクエリは順次実行にフォールバックします。キュータイムアウト — クエリがキュー内で
loose_pq_max_queuing_timeを超えて待機した場合、そのクエリはキューから削除され、順次実行にフォールバックします。
PolarDB がパラレル実行を試みるかどうかは、loose_parallel_degree_policy によって設定された DOP ポリシーに依存します。
DOP パラメーター
以下にリストされているすべてのパラメーターは、PolarDB コンソールで設定する際に loose_ プレフィックスが必要です。
キューイングとワーカーの制限
| パラメーター | スコープ | デフォルト | 説明 |
|---|---|---|---|
loose_max_parallel_workers | グローバル | CPU コア数 × 2 | 単一ノード上のすべての同時パラレルクエリにわたるパラレルワーカーの最大数。この制限に達すると、新しいパラレルクエリは FIFO キューに入ります。サーバーレスクラスターでは、この値はノード仕様のスケーリングに応じて自動的に調整されます。有効値:1~10,000。 |
loose_queuing_parallel_degree_limit | グローバル | 64 | キューで待機しているクエリの最大合計 DOP。この制限に達すると、キューは満杯になり、追加のパラレルクエリは順次実行にフォールバックします。有効値:0~10,000。 |
loose_pq_max_queuing_time | グローバル、セッション | 200 ms | クエリが順次実行にフォールバックする前にキューで待機できる最大時間。有効値:0~18,446,744,073,709,551,615 ms。 |
DOP ポリシー
| パラメーター | スコープ | デフォルト | 説明 |
|---|---|---|---|
loose_parallel_degree_policy | グローバル | REPLICA_AUTO | PolarDB が各クエリの DOP をどのように選択するかを制御します。有効値:TYPICAL、AUTO、REPLICA_AUTO。 |
ポリシーの比較:
| 値 | 並列クエリの実行者 | DOP の選択方法 |
|---|---|---|
TYPICAL | プライマリノードと読み取り専用ノード | 固定:現在の CPU 使用率に関係なく、loose_max_parallel_degree の値を使用します |
AUTO | プライマリノードと読み取り専用ノード | アダプティブ:PolarDB は、CPU 使用率、メモリ使用量、および 1 秒あたりの I/O 処理 (IOPS) に基づいてパラレル実行を有効または無効にし、クエリコストに基づいて DOP を選択します |
REPLICA_AUTO (デフォルト) | 読み取り専用ノードのみ | アダプティブ:AUTO と同じですが、プライマリノードは常に順次実行を使用します |
読み取り専用ノードがクエリパフォーマンスをアダプティブにスケーリングできるようにしつつ、プライマリノードをパラレルクエリのオーバーヘッドから保護したい場合は、REPLICA_AUTO を使用します。
リソースベースのしきい値
これらのパラメーターは、loose_parallel_degree_policy が AUTO または REPLICA_AUTO に設定されている場合に適用されます。いずれかのしきい値を超えると、PolarDB はそのノードでのパラレルクエリを無効にします。
| パラメーター | スコープ | デフォルト | しきい値の動作 |
|---|---|---|---|
loose_auto_dop_cpu_pct_hwm | グローバル | 70 | CPU 使用率がこのパーセンテージを超えると、パラレルクエリを無効にします。有効値:0~100。 |
loose_auto_dop_mem_pct_hwm | グローバル | 90 | メモリ使用量がこのパーセンテージを超えると、パラレルクエリを無効にします。有効値:0~100。 |
loose_auto_dop_iops_pct_hwm | グローバル | 80 | IOPS 使用率がこのパーセンテージを超えると、パラレルクエリを無効にします。有効値:0~100。 |
パラレルクエリ実行の監視
以下のステータス変数を使用して、パラレルクエリが順次実行にフォールバックする頻度を追跡します。
| 変数 | スコープ | 説明 |
|---|---|---|
PQ_refused_over_total_workers | グローバル、セッション | loose_max_parallel_workers に達したために順次実行にフォールバックしたクエリの数。カウントが増加している場合、ワーカーの制限がワークロードに対して低すぎる可能性があります。loose_max_parallel_workers の値を増やすことを検討してください。 |
PQ_refused_over_max_queuing_time | グローバル、セッション | キューイングタイムアウトにより順次実行にフォールバックしたクエリの数。カウントが増加している場合、クエリの待機時間が長すぎることを示します。loose_max_parallel_workers または loose_queuing_parallel_degree_limit の値を増やすか、loose_pq_max_queuing_time の値を増やすことを検討してください。 |
Total_running_parallel_workers | グローバル | 現在アクティブなパラレルワーカーの数。この値を使用して、loose_max_parallel_workers の制限にどれだけ近いかを判断します。 |