次の方法で共有


サーバー構成: cost threshold for parallelism

適用対象:SQL ServerAzure SQL Managed Instance

この記事では、SQL Server Management Studio または Transact-SQL を使用して、SQL Server 内で cost threshold for parallelism サーバー構成オプションを構成する方法について説明します。

並列処理のコストしきい値について

cost threshold for parallelism オプションは、SQL Server が複数の論理プロセッサを持つコンピューターで並列プランを考慮するしきい値を指定します。 cost threshold for parallelism オプションは、0 ~ 32,767 の任意の値に設定できます。

コストは、クエリ プランの 推定 演算子コストの合計です (CPU や I/O など)。 これは、プランの選択にのみ使用される相対メジャーです。これは実際のランタイムを測定しません。

特定の Transact-SQL コンポーネントは、並列計画を阻害する可能性があります。 たとえば、インライン化できないスカラー ユーザー定義関数 (UDF)、テーブル変数の変更、特定のシステム呼び出しなどです。 SQL Server は、最適なシリアル プランの推定コストが cost threshold for parallelism の値を超えた場合にのみ並列代替手段を評価し、より安価な並列プランを選択する可能性があります。

制限事項

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

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

  • affinity mask 構成オプションのため、SQL Server で 1 つの論理プロセッサしか使用できない。

  • max degree of parallelism サーバー構成オプションは 1 に設定されています。

推奨事項

このオプションは高度なオプションであり、経験豊富なデータベースプロフェッショナルのみが変更する必要があります。

5の既定値は、推奨事項ではなく、開始点です。 最新の SQL Server システムでは、これを上げると、シリアル プランで実行される OLTP クエリのサイズを小さくすることができます。 小さな増分を使用し、さらに変更する前に完全なビジネス サイクルを観察します。 アプリケーション パフォーマンスを最適化するために必要であれば、より高い値や低い値でアプリケーションのテストを行ってください。

Azure SQL Database では、 cost threshold for parallelismを設定することはできません。 代わりに、 MAXDOP を使用して並列処理を制御します。 詳細については、「 Azure SQL Database と Azure SQL Managed Instance での既定の MAXDOP の変更」を参照してください。

クエリのプラン コストが現在の cost threshold for parallelism 値より小さい場合でも、並列プランが選択される場合があります。 並列プランまたはシリアル プランの使用の決定は、最適化プロセスで前に示したコスト見積もりに基づいています。 詳細については、「クエリ処理アーキテクチャ ガイド」をご覧ください。

注釈

cost threshold for parallelism サーバー構成オプションがワークロードに対して高すぎるか低すぎるかを確認するには、次のインジケーターを探します。

並列処理設定のコストしきい値 Description
低すぎる - CPU ライト クエリが多すぎると並列に実行されます。

- クエリ ストアでは、多くのプランis_parallel_plan1に設定されています。

- CXPACKETCXCONSUMER は待機の種類の統計を支配します。 THREADPOOLSOS_SCHEDULER_YIELDの待機も表示される場合があります。
高すぎる - ワークロードの CPU 負荷の高いクエリが十分に並列に実行されず、結果として CPU 使用率が最適よりも高くなります。

- SOS_SCHEDULER_YIELD は待機の種類の統計を支配します。

アクセス許可

パラメーターなしで、または最初のパラメーターだけを指定して 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 ~ 32,767 の値を入力または選択します。

Transact-SQL の使用

この例では、sp_configureを使用してcost threshold for parallelismの値を 20 に設定する方法を示します。

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

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

RECONFIGURE;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO

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

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

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