cost threshold for parallelism オプション

cost threshold for parallelism オプションは、Microsoft SQL Server によって、クエリの並列プランが作成および実行されるときのしきい値を指定する場合に使用します。SQL Server によって、クエリの並列プランが作成および実行されるのは、同じクエリの直列プランを実行するための推定コストが cost threshold for parallelism に設定されている値よりも大きい場合のみです。コストとは、特定のハードウェア構成で直列プランを実行するために必要な予測所要時間を秒単位で表したものです。cost threshold for parallelism は、SMP (symmetric multiprocessor) 環境でのみ設定します。

通常は、長いクエリの方が並列プランの利点が活かされ、並列プランの初期化、同期化、および終了にかかる余分な時間を帳消しにする高パフォーマンスを得ることができます。cost threshold for parallelism オプションは、短いクエリと長いクエリの両方を組み合わせて実行する場合によく使用されます。短いクエリでは直列プランが実行され、長いクエリでは並列プランが実行されます。どのクエリを短いと見なして直列プランを使用するかは、cost threshold for parallelism の値で決定されます。

クエリのコスト プランが cost threshold for parallelism の現在の値より小さくても、並列プランが選択されることがあります。並列プランまたは直列プランのどちらを使用するかが、完全な最適化が完了する前に算出されたコストの推定値に基づいて決定された場合に、このようなことが起こります。

cost threshold for parallelism オプションには、0 ~ 32,767 の範囲の値を設定できます。既定値は 5 です。

次の条件に該当する場合、SQL Server では cost threshold for parallelism の値が無視されます。

  • 使用しているコンピューターにプロセッサが 1 つしか搭載されていない場合。

  • affinity mask 構成オプションの設定により、SQL Server で 1 つの CPU しか使用できない場合。

  • max degree of parallelism オプションが 1 に設定されている場合。

    注意

    MAXDOP クエリ オプションを使用している場合、SQL Server では cost-threshold-for-parallelism 値は無視されません。

cost threshold for parallelism は拡張オプションです。sp_configure システム ストアド プロシージャを使用して cost threshold for parallelism の設定を変更するには、show advanced options を 1 に設定する必要があります。新しい設定は、サーバーを再起動しなくてもすぐに有効になります。

次の例では、並列処理のコストのしきい値を 10 秒に設定しています。

sp_configure 'show advanced options', 1;

GO

reconfigure;

GO

sp_configure 'cost threshold for parallelism', 10;

GO

reconfigure;

GO