サーバー構成: 並列処理のコストしきい値

適用対象: SQL Server

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

制限事項

コストとは、予想時間の単位ではなく、抽象化されたコストの単位を表します。 対称マルチプロセッサでのみ設定 cost threshold for parallelism されます。

SQL Server では、次の cost threshold for parallelism 条件下では値が無視されます。

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

  • 構成オプションにより affinity mask 、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 はほとんどのシステムに適していますが、別の値が適している可能性があります。 アプリケーション パフォーマンスを最適化するために必要であれば、より高い値や低い値でアプリケーションのテストを行ってください。

アクセス許可

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

SQL Server Management Studio の使用 [SQL Server]

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

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

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

Transact-SQL の使用

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

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'cost threshold for parallelism', 10;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO

詳しくは、「サーバー構成オプション」をご覧ください。

補足情報: 並列処理のコストしきい値オプションを構成した後

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