説明
この変数はV2.1バージョンから導入されました。
機能の概要
parallel_servers_targetは、各サーバー上のパラレルクエリキューシング条件を設定します。
複数のパラレル実行(Parallel eXecution、PX)SQLが合計で消費するスレッド数がパラレルクエリキューシング条件を超えると、後続のパラレル実行SQLはキューに並んで待機する必要があります。
権限要件
変数の確認
sysテナントとすべてのユーザーテナントはSHOW VARIABLESステートメント、またはSYS.TENANT_VIRTUAL_GLOBAL_VARIABLEビュー(Oracleモード)およびinformation_schema.GLOBAL_VARIABLESビュー(MySQLモード)を使用してグローバルシステム変数の値を確認できます。変数の変更
sysテナントはグローバルシステム変数の値を直接変更できます。MySQLユーザーテナントは、グローバルシステム変数の値を変更するには
SUPERまたはALTER SYSTEM権限が必要です。Oracleユーザーテナントは、グローバルシステム変数の値を変更するには
ALTER SYSTEM権限が必要です。
プロパティの説明
プロパティ |
説明 |
|---|---|
| パラメータタイプ | Int |
| デフォルト値 | 0、特別な意味はありません。この値はテナント作成時に自動的に設定されます。 |
| 値の範囲 | [0, 9223372036854775807] |
| 適用範囲 | Global |
| 変更は可能か | はい。SETステートメントを使用して変更できます。 |
使用方法
parallel_servers_targetはテナントレベルの変数です。テナント作成時には以下のようになります:
テナント作成ステートメントで
parallel_servers_targetの値が指定されている場合、そのテナントは指定された値でparallel_servers_targetが設定されます。テナント作成時に
parallel_servers_targetの値を指定するステートメントは以下のとおりです:obclient> CREATE TENANT IF NOT EXISTS <tenant_name> CHARSET='utf8mb4', ZONE_LIST=('zone1'), PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('<pool_name>') set parallel_servers_target = 624;テナント作成時に
parallel_servers_targetの値が指定されていない場合、OBServerノード内でテナントを作成する過程で、min_cpuに基づいて自動的に値が計算され設定されます。テナントにログインし、以下のステートメントを使用してこの値を確認できます:
obclient> show variables like 'parallel_servers_target';自動計算された
parallel_servers_targetの値は通常小さく、単純なパラレルクエリのニーズしか満たせません。そのテナントでパラレル操作を使用したい場合は、手動でこの値を大きな値に設定することを推奨します。推奨アルゴリズムはparallel_servers_target = max_cpu * 10です。
設定例
各サーバー上のパラレルクエリキューシングを624に設定します。
obclient> SET GLOBAL parallel_servers_target = 624;