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

適用対象: はいSQL Server いいえAzure SQL Database いいえAzure Synapse Analytics (SQL DW) いいえParallel Data Warehouse APPLIES TO: YesSQL Server NoAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

このトピックでは、 または を使用して、 SQL ServerSQL ServerSQL Server Management StudioSQL 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 StudioSQL 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 requests 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 のバージョンのさまざまな組み合わせに対して、自動的に構成されるワーカー スレッドの最大数を示します。"* 既定の最大ワーカー数 + (( 論理 CPU 数* - 4) CPU あたりのワーカー数*)" という式が使用されています。The following table shows the automatically configured number of max worker threads for various combinations of CPUs, computer architecture, and versions of SQL ServerSQL Server, using the formula: Default Max Workers + (( logical CPUs - 4) * Workers per CPU)**.

    CPU の数Number of CPUs 32 ビット コンピューター (SQL Server 2014 (12.x)SQL Server 2014 (12.x) 以前)32-bit computer (up to SQL Server 2014 (12.x)SQL Server 2014 (12.x)) 64 ビット コンピューター (SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 以前)64-bit computer (up to SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1) 64 ビット コンピューター (SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 および SQL Server 2017 (14.x)SQL Server 2017 (14.x) 以降)64-bit computer (starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 and SQL Server 2017 (14.x)SQL Server 2017 (14.x))
    <= 4<= 4 256256 512512 512512
    88 288288 576576 576576
    1616 352352 704704 704704
    3232 480480 960960 960960
    6464 736736 14721472 24322432
    128128 12481248 24962496 44804480
    256256 22722272 45444544 85768576

    SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 以前の "CPU あたりのワーカー数" は、アーキテクチャ (32 ビットまたは 64 ビット) にのみ依存します。Up to SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1, the Workers per CPU only depend on the architecture (32-bit or 64-bit):

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

    SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 および SQL Server 2017 (14.x)SQL Server 2017 (14.x) 以降の "CPU あたりのワーカー数" は、アーキテクチャとプロセッサの数 (4 から 64 の間か、64 を超えるか) に依存します。Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 and SQL Server 2017 (14.x)SQL Server 2017 (14.x), the Workers per CPU depend on the architecture and number of processors (between 4 and 64, or greater than 64):

    CPU の数Number of CPUs 32 ビット コンピューター 132-bit computer 1 64 ビット コンピューター64-bit computer
    <= 4<= 4 256256 512512
    > 4 かつ <= 64> 4 and <= 64 256 + ((論理 CPU - 4) * 8)256 + ((logical CPU's - 4) * 8) 512 2 + ((論理 CPU 数 - 4) * 16)512 2 + ((logical CPU's - 4) * 16)
    > 64> 64 256 + ((論理 CPU - 4) * 32)256 + ((logical CPU's - 4) * 32) 512 2 + ((論理 CPU 数 - 4) * 32)512 2 + ((logical CPU's - 4) * 32)

    1 SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降の SQL ServerSQL Server は、32 ビットのオペレーティング システムにインストールすることはできません。1 Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), SQL ServerSQL Server 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 のインスタンスの場合、ワーカー スレッドの最大数として 1,024 をお勧めします。We recommend 1,024 as the maximum number of worker threads for an instance of SQL ServerSQL Server that is running on a 32-bit computer.

    2 SQL Server 2017 (14.x)SQL Server 2017 (14.x)以降の "既定の最大ワーカー数" の値は、メモリが 2 GB 未満のコンピューターの場合は 2 で除算されます。2 Starting with SQL Server 2017 (14.x)SQL Server 2017 (14.x), the Default Max Workers value is divided by 2 for machines with less than 2GB of memory.

    ヒント

    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 サーバー構成オプションでは、システム内に生成できる全スレッドに制限はありません。The max worker threads server configuration option does not limit all threads that may be spawned in the system. 可用性グループ、Service Broker、ロック マネージャーなどのタスクに必要なスレッドは、この制限の外部で生成されます。Threads required for tasks such as Availability Groups, Service Broker, Lock Manager, or others are spawned outside this limit. 構成されたスレッドの数を超えている場合は、次のクエリによって、追加のスレッドを生成したシステム タスクに関する情報が取得されます。If the number of threads configured is 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 StudioSQL Server Management StudioUsing SQL Server Management StudioSQL 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