Freigeben über


Konfigurieren der Serverkonfigurationsoption Maximale Anzahl von Arbeitsthreads

In diesem Artikel wird beschrieben, wie die Serverkonfigurationsoption Max. Anzahl von Arbeitsthreads in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL konfiguriert wird. Die Option "Max Worker Threads" konfiguriert die Anzahl der Arbeitsthreads , die für SQL Server-Prozesse verfügbar sind. SQL Server verwendet die nativen Threaddienste der Betriebssysteme, damit ein oder mehrere Threads jedes Netzwerk unterstützen, das SQL Server gleichzeitig unterstützt, ein anderer Thread verarbeitet Datenbankprüfpunkte und ein Pool von Threads alle Benutzer. Der Standardwert für Max. Anzahl von Arbeitsthreads ist 0. Auf diese Weise kann SQL Server die Anzahl der Arbeitsthreads beim Starten automatisch konfigurieren. Die Standardeinstellung ist für die meisten Systeme am besten geeignet. Abhängig von der Konfiguration des Systems kann durch Festlegen von Max. Anzahl von Arbeitsthreads auf einen bestimmten Wert manchmal die Leistung verbessert werden.

In diesem Thema

Vorbereitungen

Einschränkungen

  • 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. Wenn die tatsächliche Anzahl der Abfrageanforderung jedoch die menge überschreitet, die in max.-Workerthreads festgelegt wurde, poolt SQL Server die Arbeitsthreads, sodass der nächste verfügbare Workerthread die Anforderung verarbeiten kann.

Empfehlungen

  • Diese Option ist eine erweiterte Option und sollte nur von einem erfahrenen Datenbankadministrator oder einem zertifizierten SQL Server-Techniker geändert werden.

  • Threadpools erleichtern das Optimieren der Leistung, wenn sehr viele Clients mit dem Server verbunden sind. Üblicherweise wird ein separater Betriebssystem-Thread für jede Abfrageanforderung erstellt. 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. Die Option Max. Anzahl von Arbeitsthreads ermöglicht SQL Server das Erstellen eines Pools mit Arbeitsthreads, der eine große Anzahl von Abfrageanforderungen versorgen kann und so zur Verbesserung der Leistung beiträgt.

  • Die folgende Tabelle zeigt die automatisch konfigurierte Anzahl der max.-Worker-Threads für verschiedene Kombinationen von CPUs und Versionen von SQL Server.

    Anzahl von CPUs 32-Bit-Computer 64-Bit-Computer
    <= 4 Prozessoren 256 512
    8 Prozessoren 288 576
    16 Prozessoren 352 704
    32 Prozessoren 480 960
    64 Prozessoren 736 1472
    128 Prozessoren 4,224 4480
    256 Prozessoren 8320 8576

    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.

    Warnung

    Wir empfehlen 1024 als maximale Anzahl von Arbeitsthreads für eine Instanz von SQL Server, die auf einem 32-Bit-Computer ausgeführt wird.

  • Wenn alle Arbeitsthreads aktiviert sind, kann es sein, dass SQL Server bei Abfragen mit langer Ausführungszeit scheinbar nicht mehr reagiert, bis ein Arbeitsthread abgeschlossen wird und verfügbar ist. Dies ist zwar kein Fehler, aber in bestimmten Situationen unerwünscht. 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 Server her, und brechen Sie den Prozess ab. Um diese Situation zu verhindern, erhöhen Sie den Wert für die maximale Anzahl von Arbeitsthreads.

Die Serverkonfigurationsoption Max. Anzahl von Arbeitsthreads berücksichtigt keine Kontothreads, die für alle Systemtasks wie Verfügbarkeitsgruppen, Service Broker, Sperren-Manager und andere erforderlich sind. Wenn die Anzahl der konfigurierten Threads überschritten wird, stellt die folgende Abfrage Informationen zu den Systemtasks bereit, durch die die zusätzlichen Threads generiert wurden.

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  
INNERJOIN 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;  
  

Sicherheit

Berechtigungen

Die Ausführungsberechtigungen für sp_configure ohne Parameter oder nur mit dem ersten Parameter werden standardmäßig allen Benutzern erteilt. Zum Ausführen von sp_configure mit beiden Parametern zum Ändern einer Konfigurationsoption oder zum Ausführen der RECONFIGURE-Anweisung muss einem Benutzer die ALTER SETTINGS-Berechtigung auf Serverebene erteilt worden sein. Die ALTER SETTINGS-Berechtigung ist in den festen Serverrollen sysadmin und serveradmin eingeschlossen.

Verwendung von SQL Server Management Studio

So konfigurieren Sie die Option Max. Anzahl von Arbeitsthreads

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf einen Server, und wählen Sie Eigenschaften aus.

  2. Klicken Sie auf den Knoten Prozessoren .

  3. Geben Sie im Feld Max. Anzahl von Arbeitsthreads einen Wert zwischen 128 und 32767 ein, oder wählen Sie einen Wert aus.

    Sie können mithilfe der Option Max. Anzahl von Arbeitsthreads die Anzahl von Arbeitsthreads konfigurieren, die SQL Server -Prozessen zur Verfügung stehen. Die Standardeinstellung für Max. Anzahl von Arbeitsthreads eignet sich für die meisten Systeme am besten. Abhängig von der Konfiguration des Systems kann die Leistung manchmal verbessert werden, indem Max. Anzahl von Arbeitsthreads auf einen niedrigeren Wert festgelegt wird.

Verwenden von Transact-SQL

So konfigurieren Sie die Option Max. Anzahl von Arbeitsthreads

  1. Stellen Sie eine Verbindung mit dem Datenbank-Engineher.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen. In diesem Beispiel wird gezeigt, wie sp_configure verwendet wird, um die Option max worker threads auf 900festzulegen.

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

Weitere Informationen finden Sie unter Serverkonfigurationsoptionen (SQL Server).

Nachverfolgung: Nach dem Konfigurieren der Option Max. Anzahl von Arbeitsthreads

Die Änderung wird sofort wirksam, ohne dass die Datenbank-Engine neu gestartet werden muss.

Weitere Informationen

RECONFIGURE (Transact-SQL)
Serverkonfigurationsoptionen (SQL Server)
sp_configure (Transact-SQL)
Diagnoseverbindung für Datenbankadministratoren