適用対象:SQL Server
Azure 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に設定されています。- CXPACKET と CXCONSUMER は待機の種類の統計を支配します。
THREADPOOLとSOS_SCHEDULER_YIELDの待機も表示される場合があります。 |
| 高すぎる | - ワークロードの CPU 負荷の高いクエリが十分に並列に実行されず、結果として CPU 使用率が最適よりも高くなります。 - SOS_SCHEDULER_YIELD は待機の種類の統計を支配します。 |
アクセス許可
パラメーターなしで、または最初のパラメーターだけを指定して sp_configure を実行する権限は、既定ですべてのユーザーに付与されます。 両方のパラメーターを指定して sp_configure を実行し構成オプションを変更したり RECONFIGURE ステートメントを実行したりするには、ALTER SETTINGS サーバーレベル権限がユーザーに付与されている必要があります。
ALTER SETTINGS 権限は、sysadmin 固定サーバー ロールと serveradmin 固定サーバー ロールでは暗黙のうちに付与されています。
SQL Server Management Studio の使用 [SQL Server]
オブジェクト エクスプローラーで、サーバーを右クリックし、 [プロパティ] をクリックします。
[詳細設定] ノードを選びます。
[並列処理] で、
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 オプションを構成した後
新しい設定は、サーバーを再起動しなくてもすぐに有効になります。