Konfigurieren der Serverkonfigurationsoption Maximale Anzahl von ArbeitsthreadsConfigure the max worker threads Server Configuration Option

Gilt für: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

In diesem Thema wird beschrieben, wie die Serverkonfigurationsoption Max. Anzahl von Arbeitsthreads in SQL ServerSQL Server mithilfe von SQL Server Management StudioSQL Server Management Studio oder Transact-SQLTransact-SQLkonfiguriert wird.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. Sie können mithilfe der Option Max. Anzahl von Arbeitsthreads die Anzahl von Arbeitsthreads konfigurieren, die für SQL ServerSQL Server -Prozesse zur Verfügung stehen.The max worker threads option configures the number of worker threads that are available to SQL ServerSQL Server processes. SQL ServerSQL Server verwendet die systemeigenen Threaddienste der Betriebssysteme, sodass jedes Netzwerk, das gleichzeitig von SQL ServerSQL Server unterstützt wird, von mindestens einem Thread unterstützt wird. Ein weiterer Thread verarbeitet die Datenbank-Prüfpunkte, und ein Threadpool verarbeitet alle Benutzer.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. Der Standardwert für Max. Anzahl von Arbeitsthreads ist 0.The default value for max worker threads is 0. Auf diese Weise kann SQL ServerSQL Server die Anzahl der Arbeitsthreads beim Starten automatisch konfigurieren.This enables SQL ServerSQL Server to automatically configure the number of worker threads at startup. Die Standardeinstellung ist für die meisten Systeme am besten geeignet.The default setting is best for most systems. Abhängig von der Konfiguration des Systems kann durch Festlegen von Max. Anzahl von Arbeitsthreads auf einen bestimmten Wert manchmal die Leistung verbessert werden.However, depending on your system configuration, setting max worker threads to a specific value sometimes improves performance.

In diesem ThemaIn This Topic

VorbereitungenBefore You Begin

EinschränkungenLimitations and Restrictions

  • Wenn die tatsächliche Anzahl von Abfrageanforderungen geringer als der für Max. Anzahl von Arbeitsthreadsfestgelegte Wert ist, werden alle Abfrageanforderungen von einem Thread verarbeitet.When the actual number of query requests is less than the amount set in max worker threads, one thread handles each query request. Wenn die tatsächliche Anzahl von Abfrageanforderungen jedoch den für max worker threadsfestgelegten Wert überschreitet, erstellt SQL ServerSQL Server einen Pool von Arbeitsthreads, damit die Anforderung vom nächsten verfügbaren Arbeitsthread verarbeitet werden kann.However, if the actual number of query request exceeds the amount set in max worker threads, pools the worker threads so that the next available worker thread can handle the request.

Empfehlungen

Recommendations:

  • Diese Option ist eine erweiterte Option und sollte ausschließlich von einem erfahrenen Datenbankadministrator oder einem zertifizierten SQL ServerSQL Server -Experten geändert werden.This option is an advanced option and should be changed only by an experienced database administrator or certified SQL ServerSQL Server professional. Wenn Sie ein Leistungsproblem vermuten, ist es wahrscheinlich nicht die Verfügbarkeit von Arbeitsthreads.If you suspect that there is a performance problem, it is probably not the availability of worker threads. Eine wahrscheinlichere Ursache ist z.B. E/A, die ein Warten der Arbeitsthreads bewirkt.The cause is more likely something like I/O that is causing the worker threads to wait. Sinnvollerweise sollten Sie die Grundursache eines Leistungsproblems ermitteln, bevor Sie die Einstellung für die maximale Anzahl der Arbeitsthreads ändern.It is best to find the root cause of a performance issue before you change the max worker threads setting.

  • Threadpools erleichtern das Optimieren der Leistung, wenn sehr viele Clients mit dem Server verbunden sind.Thread pooling helps optimize performance when large numbers of clients are connected to the server. Üblicherweise wird ein separater Betriebssystemthread für jede Abfrageanforderung erstellt.Usually, a separate operating system thread is created for each query request. Wenn jedoch bei Hunderten von Verbindungen mit dem Server weiterhin ein Thread pro Abfrageanforderung verwendet wird, kann dabei eine große Menge an Systemressourcen verbraucht werden.However, with hundreds of connections to the server, using one thread per query request can consume large amounts of system resources. Die Option Max. Anzahl von Arbeitsthreads ermöglicht SQL ServerSQL Server das Erstellen eines Pools mit Arbeitsthreads, der eine große Anzahl von Abfrageanforderungen versorgen kann und so zur Verbesserung der Leistung beiträgt.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.

  • In der folgenden Tabelle werden die automatisch konfigurierte maximale Anzahl von Arbeitsthreads für verschiedene Kombinationen von CPUs und Versionen von SQL ServerSQL Serverdargestellt.The following table shows the automatically configured number of max worker threads for various combinations of CPUs and versions of SQL ServerSQL Server.

    Anzahl von CPUsNumber of CPUs 32-Bit-Computer32-bit computer 64-Bit-Computer64-bit computer
    <= 4 Prozessoren<= 4 processors 256256 512512
    8 Prozessoren8 processors 288288 576576
    16 Prozessoren16 processors 352352 704704
    32 Prozessoren32 processors 480480 960960
    64 Prozessoren64 processors 736736 14721472
    128 Prozessoren128 processors 42244224 44804480
    256 Prozessoren256 processors 83208320 85768576

    Verwenden Sie die folgende Formel:Using the following formula:

    Anzahl von CPUsNumber of CPUs 32-Bit-Computer32-bit computer 64-Bit-Computer64-bit computer
    <= 4 Prozessoren<= 4 processors 256256 512512
    > 4 Prozessoren und < = 64 Prozessoren
    > 4 processors and < 64 processors 256 + ((logische CPUs - 4) * 8)256 + ((logical CPU's - 4) * 8) 512 + ((logische CPUs – 4) * 16)512 + ((logical CPU's - 4) * 16)
    > 64 Prozessoren> 64 processors 256 + ((logische CPUs – 4) * 32)256 + ((logical CPU's - 4) * 32) 512 + ((logische CPUs – 4) * 32)512 + ((logical CPU's - 4) * 32)

    Hinweis

    SQL ServerSQL Server kann nicht mehr unter einem 32-Bit-Betriebssystem installiert werden.can no longer be installed on a 32-bit operating system. Werte für 32-Bit-Computer sind zur Unterstützung von Kunden aufgeführt, die SQL Server 2014 (12.x)SQL Server 2014 (12.x) und früher nutzen.32-bit computer values are listed for the assistance of customers running SQL Server 2014 (12.x)SQL Server 2014 (12.x) and earlier. Als maximale Anzahl von Arbeitsthreads auf einer SQL ServerSQL Server-Instanz, die auf einem 32-Bit-Computer ausgeführt wird, wird der Wert 1.024 empfohlen.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.

    Hinweis

    Empfehlungen zur Verwendung von mehr als 64 CPUs finden Sie unter Bewährte Methoden zum Ausführen von SQL Server auf Computern mit mehr als 64 CPUs.For recommendations on using more than 64 CPUs, refer to Best Practices for Running SQL Server on Computers That Have More Than 64 CPUs.

  • Wenn alle Arbeitsthreads aktiviert sind, kann es sein, dass SQL ServerSQL Server bei Abfragen mit langer Ausführungszeit scheinbar nicht mehr reagiert, bis ein Arbeitsthread abgeschlossen wird und verfügbar ist.When all worker threads are active with long running queries, SQL ServerSQL Server might appear unresponsive until a worker thread completes and becomes available. Dies ist zwar kein Fehler, aber in bestimmten Situationen unerwünscht.Although this is not a defect, it can sometimes be undesirable. Wenn ein Prozess scheinbar nicht mehr reagiert und keine neuen Abfragen verarbeitet werden können, stellen Sie mithilfe der dedizierten Administratorverbindung (DAC) eine Verbindung mit SQL ServerSQL Server her, und brechen Sie den Prozess ab.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. Um diese Situation zu verhindern, erhöhen Sie den Wert für die maximale Anzahl von Arbeitsthreads.To prevent this, increase the number of max worker threads.

Durch die Serverkonfigurationsoption Max. Anzahl von Arbeitsthreads werden nicht alle Threads begrenzt, die im System erzeugt werden können.The max worker threads server configuration option does not limit all threads that may be spanwed in the system. Threads, die für Aufgaben wie Verfügbarkeitsgruppen, Service Broker, Sperren-Manager usw. erforderlich sind, gehen über dieses Limit hinaus.Threads required for tasks such as Availibility Groups, Service Broker, Lock Manager, or others are spawned outside this limit. Wenn die Anzahl der konfigurierten Threads überschritten wird, bietet die folgende Abfrage Informationen zu den Systemtasks, durch die die zusätzlichen Threads erzeugt wurden.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;  

SicherheitSecurity

BerechtigungenPermissions

Die Ausführungsberechtigungen für sp_configure ohne Parameter oder nur mit dem ersten Parameter werden standardmäßig allen Benutzern erteilt.Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. Um sp_configure mit beiden Parametern auszuführen und eine Konfigurationsoption zu ändern oder die RECONFIGURE-Anweisung auszuführen, benötigt ein Benutzer die ALTER SETTINGS-Berechtigung auf Serverebene.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. Die ALTER SETTINGS-Berechtigung ist implizit in den festen Serverrollen sysadmin und serveradmin enthalten.The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

Bei Verwendung von SQL Server Management StudioSQL Server Management StudioUsing:

So konfigurieren Sie die Option Max. Anzahl von ArbeitsthreadsTo configure the max worker threads option

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf einen Server, und wählen Sie Eigenschaften aus.In Object Explorer, right-click a server and select Properties.

  2. Klicken Sie auf den Knoten Prozessoren .Click the Processors node.

  3. Geben Sie im Feld Max. Anzahl von Arbeitsthreads einen Wert zwischen 128 und 32.767 ein, oder wählen Sie einen Wert aus.In the Max worker threads box, type or select a value from 128 through 32767.

Tipp

Sie können mithilfe der Option Max. Anzahl von Arbeitsthreads die Anzahl von Arbeitsthreads konfigurieren, die SQL ServerSQL Server -Prozessen zur Verfügung stehen.Use the max worker threads option to configure the number of worker threads available to SQL ServerSQL Server processes. Die Standardeinstellung für Max. Anzahl von Arbeitsthreads eignet sich für die meisten Systeme am besten.The default setting for max worker threads is best for most systems. Abhängig von der Konfiguration des Systems kann die Leistung manchmal verbessert werden, indem Max. Anzahl von Arbeitsthreads auf einen niedrigeren Wert festgelegt wird.However, depending on your system configuration, setting max worker threads to a smaller value sometimes improves performance. Unter Empfehlungen auf dieser Seite finden Sie weitere Informationen.See Recommendations in this page for more information.

Verwenden von Transact-SQLUsing Transact-SQL

So konfigurieren Sie die Option Max. Anzahl von ArbeitsthreadsTo configure the max worker threads option

  1. Stellen Sie eine Verbindung mit dem Datenbank-EngineDatabase Engineher.Connect to the Datenbank-EngineDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.From the Standard bar, click New Query

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute. In diesem Beispiel wird gezeigt, wie sp_configure verwendet wird, um die Option max worker threads auf 900festzulegen.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  

Nächster Schritt: Nach dem Konfigurieren der Option „Max. Anzahl von Arbeitsthreads“

Follow Up: After you configure the max worker threads option
Die Änderung wird nach dem Ausführen von RECONFIGURE sofort wirksam, ohne dass ein Neustart von Datenbank-EngineDatabase Engine erforderlich ist.The change will take effect immediately after executing RECONFIGURE, without requiring the Datenbank-EngineDatabase Engine to restart.

Weitere InformationenSee Also

Serverkonfigurationsoptionen (SQL Server) Server Configuration Options (SQL Server)
RECONFIGURE (Transact-SQL) RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
Diagnoseverbindung für Datenbankadministratoren Diagnostic Connection for Database Administrators