cost threshold for parallelism (サーバー構成オプション) の構成

適用対象:SQL Server

この記事では、SQL Server Management Studio または Transact-SQL を使用して、SQL Server の cost threshold for parallelism サーバー構成オプションを構成する方法について説明します。 cost threshold for parallelism オプションによって、 SQL Server がクエリの並列プランを作成および実行するしきい値が指定されます。 SQL Server によって、クエリの並列プランが作成および実行されるのは、同じクエリの直列プランを実行するための推定コストが cost threshold for parallelismに設定されている値を超える場合のみです。 コストとは、TIME のユニットではなく、特定のハードウェア構成でシリアル プランを実行するのに要求される見積原価を表します。 cost threshold for parallelism オプションには、0 ~ 32,767 の範囲の値を設定できます。

制限事項

コストとは、予想時間の単位ではなく、抽象化されたコストの単位を表します。 cost threshold for parallelism は、SMP (symmetric multiprocessor) 環境でのみ設定します。

SQL Server では または の値が無視されます。

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

  • SQL Server 関係マスク 構成オプションの設定により、 で 1 つの論理プロセッサしか使用できない場合。

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

論理プロセッサは、オペレーティング システムでのタスクのディスパッチまたはスレッド コンテキストの実行を可能にするプロセッサ ハードウェアの基本単位です。 各論理プロセッサは一度に 1 つのスレッド コンテキストのみを実行できます。 プロセッサのコアは、命令をデコードして実行する能力を提供する回路です。 プロセッサのコアには 1 つ以上の論理プロセッサが含まれます。 次の Transact-SQL クエリは、システムの CPU 情報の取得に使用できます。

SELECT (cpu_count / hyperthread_ratio) AS PhysicalCPUs,
    cpu_count AS logicalCPUs
FROM sys.dm_os_sys_info;

推奨事項

  • このオプションは詳細設定オプションであるため、熟練したデータベース管理者または認定された SQL Server プロフェッショナルだけが変更するようにしてください。

  • クエリのコスト プランが cost threshold for parallelism の現在の値より小さくても、並列プランが選択されることがあります。 並列プランまたは直列プランのどちらを使用するかが、最適化プロセスの初期段階で算出されたコストの推定値に基づいて決定された場合に、このようなことが起こります。 詳細については、「クエリ処理アーキテクチャ ガイド」をご覧ください。

  • ほとんどのシステムでは既定値の 5 で適切ですが、別の VALUE が適切な場合もあります。 アプリケーション パフォーマンスを最適化するために必要であれば、より高い値や低い値でアプリケーションのテストを行ってください。

アクセス許可

パラメーターなしで、または最初のパラメーターだけを指定して sp_configure を実行する権限は、既定ですべてのユーザーに付与されます。 両方のパラメーターを指定して sp_configure を実行し構成オプションを変更したり RECONFIGURE ステートメントを実行したりするには、ALTER SETTINGS サーバーレベル権限がユーザーに付与されている必要があります。 ALTER SETTINGS 権限は、 sysadmin 固定サーバー ロールと serveradmin 固定サーバー ロールでは暗黙のうちに付与されています。

SQL Server Management Studio の使用 [SQL Server]

  1. オブジェクト エクスプローラーで、サーバーを右クリックし、 [プロパティ] をクリックします。

  2. [詳細設定] ノードを選びます。

  3. [並列処理] で、 [並列処理のコストしきい値] オプションを目的の値に変更します。 0 ~ 32767 の値を、入力または選択します。

Transact-SQL の使用

この例では、 sp_configure を使用して、 cost threshold for parallelism オプションの値を 10に設定する方法を示します。

USE master;
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE
GO
EXEC sp_configure 'cost threshold for parallelism', 10;
GO
RECONFIGURE
GO

詳細については、「サーバー構成オプション (SQL Server)」を参照してください。

補足情報: cost threshold for parallelism オプションを構成した後

新しい設定は、サーバーを再起動しなくてもすぐに有効になります。