max worker threads サーバー構成オプションの構成Configure the max worker threads Server Configuration Option

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックでは、 または を使用して、 SQL ServerSQL Server[SQL Server Management Studio]SQL Server Management Studio max worker threads Transact-SQLTransact-SQLサーバー構成オプションを構成する方法について説明します。This topic describes how to configure the max worker threads server configuration option in SQL ServerSQL Server by using [SQL Server Management Studio]SQL Server Management Studio or Transact-SQLTransact-SQL. max worker threads オプションは、 SQL ServerSQL Server プロセスで利用できるワーカー スレッド数を構成します。The max worker threads option configures the number of worker threads that are available to SQL ServerSQL Server processes. SQL ServerSQL Server では、オペレーティング システムのネイティブ スレッド サービスを使用しているため、1 つ以上のスレッドが SQL ServerSQL Server で同時にサポートされている各ネットワークをサポートし、他のスレッドがデータベース チェックポイントを処理し、スレッド プールがすべてのユーザーを処理します。uses the native thread services of the operating systems so that one or more threads support each network that SQL ServerSQL Server supports simultaneously, another thread handles database checkpoints, and a pool of threads handles all users. max worker threads の既定値は 0 です。The default value for max worker threads is 0. この場合、ワーカー スレッドの数が、 SQL ServerSQL Server によって起動時に自動で構成されます。This enables SQL ServerSQL Server to automatically configure the number of worker threads at startup. 既定の設定は、ほとんどのシステムで最適な設定です。The default setting is best for most systems. ただし、システム構成によっては、 max worker threads を特定の値に設定するとパフォーマンスが向上することがあります。However, depending on your system configuration, setting max worker threads to a specific value sometimes improves performance.

このトピックの内容In This Topic

はじめにBefore You Begin

制限事項と制約事項Limitations and Restrictions

  • 実際のクエリ要求数が max worker threadsに設定した値を下回る場合、1 つのスレッドで 1 つのクエリ要求が処理されます。When the actual number of query requests is less than the amount set in max worker threads, one thread handles each query request. 一方、実際のクエリ要求数が max worker threadsに設定した値を超える場合は、ワーカー スレッド プールが SQL ServerSQL Server によって作成され、次に使用可能なワーカー スレッドで要求を処理できるようになります。However, if the actual number of query request exceeds the amount set in max worker threads, SQL ServerSQL Server pools the worker threads so that the next available worker thread can handle the request.

推奨事項Recommendations

  • このオプションは詳細設定オプションであるため、熟練したデータベース管理者または認定された SQL ServerSQL Server プロフェッショナルだけが変更するようにしてください。This option is an advanced option and should be changed only by an experienced database administrator or certified SQL ServerSQL Server professional. パフォーマンスの問題が疑われる場合、それはおそらくワーカー スレッドの問題ではありません。If you suspect that there is a performance problem, it is probably not the availability of worker threads. I/O などがワーカー スレッドを待機させている可能性が高いです。The cause is more likely something like I/O that is causing the worker threads to wait. ワーカー スレッドの最大数設定を変更する前に、パフォーマンス問題の根本原因を見つけることが推奨されます。It is best to find the root cause of a performance issue before you change the max worker threads setting.

  • スレッド プールは、多数のクライアントがサーバーに接続されている場合のパフォーマンスの最適化に役立ちます。Thread pooling helps optimize performance when large numbers of clients are connected to the server. 通常、クエリ要求ごとに個別のオペレーティング システム スレッドが作成されます。Usually, a separate operating system thread is created for each query request. ただし、サーバーへの接続が数百にもなる場合、クエリ要求ごとに 1 つのスレッドを使用すると大量のシステム リソースが消費されることがあります。However, with hundreds of connections to the server, using one thread per query request can consume large amounts of system resources. max worker threads オプションを使用すると、 SQL ServerSQL Server によってワーカー スレッド プールが作成され多数のクエリ要求を処理できるようになります。その結果、パフォーマンスが向上します。The max worker threads option enables SQL ServerSQL Server to create a pool of worker threads to service a larger number of query requests, which improves performance.

  • 次の表に、CPU および SQL ServerSQL Serverの各バージョンのさまざまな組み合わせに対して、自動的に構成されるワーカー スレッドの最大数を示します。The following table shows the automatically configured number of max worker threads for various combinations of CPUs and versions of SQL ServerSQL Server.

    CPU の数Number of CPUs 32 ビット コンピューター32-bit computer 64 ビット コンピューター64-bit computer
    <= 4 個のプロセッサ<= 4 processors 256256 512512
    8 個のプロセッサ8 processors 288288 576576
    16 個のプロセッサ16 processors 352352 704704
    32 個のプロセッサ32 processors 480480 960960
    64 個のプロセッサ64 processors 736736 14721472
    128 個のプロセッサ128 processors 42244224 44804480
    256 個のプロセッサ256 processors 83208320 85768576

    次の式を使用します。Using the following formula:

    CPU の数Number of CPUs 32 ビット コンピューター32-bit computer 64 ビット コンピューター64-bit computer
    <= 4 個のプロセッサ<= 4 processors 256256 512512
    > 4 個のプロセッサ> 4 processors 256 + ((論理 CPU - 4) * 8)256 + ((logical CPU's - 4) * 8) 512 + ((論理 CPU - 4) * 16)512 + ((logical CPU's - 4) * 16)

    注意

    SQL ServerSQL Server は、32 ビットのオペレーティング システムにインストールすることができません。can no longer be installed on a 32-bit operating system. 32 ビット コンピューターの値は、 SQL Server 2014 (12.x)SQL Server 2014 (12.x) 以前のバージョンを実行しているお客様への参考として一覧表示されています。32-bit computer values are listed for the assistance of customers running SQL Server 2014 (12.x)SQL Server 2014 (12.x) and earlier. 32 ビット コンピューター上で動作する SQL ServerSQL Server のインスタンスの場合、ワーカー スレッドの最大数として 1024 をお勧めします。We recommend 1024 as the maximum number of worker threads for an instance of SQL ServerSQL Server that is running on a 32-bit computer.

    注意

    64 個を超える CPU を使用する場合の推奨事項については、「 64 個を超える CPU を搭載したコンピューター上で SQL Server を実行する場合のベスト プラクティス」を参照してください。For recommendations on using more than 64 CPUs, refer to Best Practices for Running SQL Server on Computers That Have More Than 64 CPUs.

  • クエリの実行が長時間にわたり、すべてのスレッドがアクティブになっている場合、いずれかのワーカー スレッドが処理を完了し使用できるようになるまで、 SQL ServerSQL Server が応答していないように見えることがあります。When all worker threads are active with long running queries, SQL ServerSQL Server might appear unresponsive until a worker thread completes and becomes available. これは欠陥ではありませんが、望ましくない場合があります。Although this is not a defect, it can sometimes be undesirable. プロセスが応答せず新しいクエリを処理できない場合は、専用管理者接続 (DAC) を使用して SQL ServerSQL Server に接続し、プロセスを終了します。If a process appears to be unresponsive and no new queries can be processed, then connect to SQL ServerSQL Server using the dedicated administrator connection (DAC), and kill the process. このような状態を回避するには、ワーカー スレッド数を増やします。To prevent this, increase the number of max worker threads.

    max worker threads サーバー構成オプションでは、可用性グループ、Service Broker、ロック マネージャーなど、すべてのシステム タスクに必要なスレッドは考慮されません。The max worker threads server configuration option does not take into account threads that are required for all the system tasks such as Availibility Groups, Service Broker, Lock Manager, and others. 構成されたスレッドの数を超えている場合は、次のクエリによって、追加のスレッドを生成したシステム タスクに関する情報が取得されます。If the number of threads configured are being exceeded, the following query will provide information about the system tasks that have spawned the additional threads.

    SELECT  s.session_id, r.command, r.status,  
    r.wait_type, r.scheduler_id, w.worker_address,  
    w.is_preemptive, w.state, t.task_state,  
    t.session_id, t.exec_context_id, t.request_id  
    FROM sys.dm_exec_sessions AS s  
    INNER JOIN sys.dm_exec_requests AS r  
    ON s.session_id = r.session_id  
    INNER JOIN sys.dm_os_tasks AS t  
    ON r.task_address = t.task_address  
    INNER JOIN sys.dm_os_workers AS w  
    ON t.worker_address = w.worker_address  
    WHERE s.is_user_process = 0;  
    

セキュリティSecurity

PermissionsPermissions

パラメーターなしで、または最初のパラメーターだけを指定して sp_configure を実行する権限は、既定ですべてのユーザーに付与されます。Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. 両方のパラメーターを指定して sp_configure を実行し構成オプションを変更したり RECONFIGURE ステートメントを実行したりするには、ALTER SETTINGS サーバーレベル権限がユーザーに付与されている必要があります。To execute sp_configure with both parameters to change a configuration option or to run the RECONFIGURE statement, a user must be granted the ALTER SETTINGS server-level permission. ALTER SETTINGS 権限は、 sysadmin 固定サーバー ロールと serveradmin 固定サーバー ロールでは暗黙のうちに付与されています。The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

使用 [SQL Server Management Studio]SQL Server Management StudioUsing [SQL Server Management Studio]SQL Server Management Studio

max worker threads オプションを構成するにはTo configure the max worker threads option

  1. オブジェクト エクスプローラーで、サーバーを右クリックし、 [プロパティ] をクリックします。In Object Explorer, right-click a server and select Properties.

  2. [プロセッサ] ノードをクリックします。Click the Processors node.

  3. [ワーカー スレッド最大数] ボックスに、128 ~ 32,767 の値を入力するか、または選択します。In the Max worker threads box, type or select a value from 128 through 32,767.

ヒント

[ワーカー スレッド最大数] オプションを使用して、 SQL ServerSQL Server プロセスで利用できるワーカー スレッド数を設定できます。Use the max worker threads option to configure the number of worker threads available to SQL ServerSQL Server processes. ほとんどのシステムの場合、 [ワーカー スレッド最大数] の既定値を使用するのが最適です。The default setting for max worker threads is best for most systems. ただし、システム構成によっては、 max worker threads の値を小さくするとパフォーマンスが向上することがあります。However, depending on your system configuration, setting max worker threads to a smaller value sometimes improves performance. 詳細については、このページの「推奨事項」を参照してください。See Recommendations in this page for more information.

Transact-SQL の使用Using Transact-SQL

max worker threads オプションを構成するにはTo configure the max worker threads option

  1. データベース エンジンDatabase Engineに接続します。Connect to the データベース エンジンDatabase Engine.

  2. [標準] ツール バーの [新しいクエリ] をクリックします。From the Standard bar, click New Query.

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。Copy and paste the following example into the query window and click Execute. この例では、 sp_configure を使用して、 max worker threads オプションを 900に設定する方法を示します。This example shows how to use sp_configure to configure the max worker threads option to 900.

USE AdventureWorks2012 ;  
GO  
EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE ;  
GO  
EXEC sp_configure 'max worker threads', 900 ;  
GO  
RECONFIGURE;  
GO  

補足情報: max worker threads オプションを構成した後Follow Up: After you configure the max worker threads option

RECONFIGURE の実行後、 データベース エンジンDatabase Engine を再起動しなくても、変更は直ちに有効になります。The change will take effect immediately after executing RECONFIGURE, without requiring the データベース エンジンDatabase Engine to restart.

参照See Also

サーバー構成オプション (SQL Server) Server Configuration Options (SQL Server)
RECONFIGURE (Transact-SQL) RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
データベース管理者用の診断接続Diagnostic Connection for Database Administrators