max worker threads オプション

Microsoft SQL Server プロセスで使用できるワーカー スレッド数を設定するには、max worker threads オプションを使用します。SQL Server では、Microsoft Windows 2000 および Windows Server 2003 の各オペレーティング システムのネイティブ スレッド サービスを使用しているため、1 つ以上のスレッドが SQL Server で同時にサポートされている各ネットワークをサポートし、他のスレッドがデータベース チェックポイントを処理し、スレッド プールがすべてのユーザーを処理します。

max worker threads オプションの用途

スレッド プールは、多数のクライアントがサーバーに接続されている場合のパフォーマンスの最適化に役立ちます。通常、クエリ要求ごとに個別のオペレーティング システム スレッドが作成されます。ただし、サーバーへの接続が数百にもなる場合、クエリ要求ごとに 1 つのスレッドを使用すると大量のシステム リソースが消費されることがあります。max worker threads オプションを使用すると、SQL Server によってワーカー スレッド プールが作成され多数のクエリ要求を処理できるようになります。その結果、パフォーマンスが向上します。

max worker threads の計算

max worker threads の既定値は 0 です。この値を指定した場合は、スタートアップ時に SQL Server によってワーカー スレッドの数が自動的に構成されます。この設定はほとんどのシステムにとって最適な設定ですが、システムの構成によっては、max worker threads に特定の値を設定すると、パフォーマンスが向上する場合があります。

次の表に、CPU および SQL Server の各バージョンのさまざまな組み合わせに対して、自動的に構成されるワーカー スレッドの最大数を示します。

CPU の数

32 ビット コンピューター

64 ビット コンピューター

4 個以下のプロセッサ

256

512

8 個のプロセッサ

288

576

16 個のプロセッサ

352

704

32 個のプロセッサ

480

960

注記注意

32 ビットの SQL Server では、最大値として 1,024 を設定することをお勧めします。

実際のクエリ要求数が max worker threads に設定した値を下回る場合、1 つのスレッドで 1 つのクエリ要求が処理されます。一方、実際のクエリ要求数が max worker threads に設定した値を超える場合は、ワーカー スレッド プールが作成され、次に使用可能なワーカー スレッドで要求を処理できるようになります。

SQL Server 2000 からのアップグレード

SQL Server 2000 の max worker threads の既定値は 255 です。SQL Server 2000 データベース エンジンのインスタンスを新しいバージョンにアップグレードしても、max worker threads の構成値は変わりません。アップグレードする場合、新しいインスタンスの max worker threads の値を 0 に変更して、データベース エンジンで最適なスレッド数を計算できるようにすることをお勧めします。

max worker threads の設定

max worker threads は拡張オプションです。sp_configure システム ストアド プロシージャを使用して max worker threads の設定を変更するには、show advanced options を 1 に設定する必要があります。新しい設定を適用するには、システムを再起動する必要があります。

注意

クエリの実行が長時間にわたり、すべてのスレッドがアクティブになっている場合、いずれかのワーカー スレッドが処理を完了し使用できるようになるまで、SQL Server が応答していないように見えることがあります。これは欠陥ではありませんが、望ましくない場合があります。プロセスが応答せず新しいクエリを処理できない場合は、専用管理者接続 (DAC) を使用して SQL Server に接続し、プロセスを終了します。このような状態を回避するには、ワーカー スレッド数を増やします。