max worker threads (Option)

Mithilfe der Option max worker threads können Sie die Anzahl von Arbeitsthreads konfigurieren, die Microsoft SQL Server-Prozessen zur Verfügung stehen. SQL Server verwendet die systemeigenen Threaddienste der Betriebssysteme Microsoft Windows 2000 und Windows Server 2003, sodass jedes Netzwerk, das gleichzeitig von SQL 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.

Zweck der Option "max worker threads"

Threadpools erleichtern das Optimieren der Leistung, wenn sehr viele Clients mit dem Server verbunden sind. Üblicherweise wird ein separater Betriebssystemthread 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 worker threads 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.

Berechnen von "max worker threads"

Mit dem Standardwert 0 für max worker threads wird die Anzahl von Arbeitsthreads beim Start automatisch von SQL Server konfiguriert. Diese Einstellung ist für die meisten Systeme optimal geeignet. Abhängig von der Konfiguration des Systems kann jedoch durch Festlegen von max worker threads auf einen bestimmten Wert manchmal die Leistung verbessert werden.

In der folgenden Tabelle werden die automatisch konfigurierte maximale Anzahl von Arbeitsthreads für verschiedene Kombinationen von CPUs und Versionen von SQL Server dargestellt.

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

VorsichtshinweisVorsicht

Wir empfehlen 1024 als Maximum für die 32-Bit-Version von SQL Server.

Wenn die tatsächliche Anzahl von Abfrageanforderungen geringer als der für max worker threads festgelegte Wert ist, werden alle Anforderungen von einem Thread verarbeitet. Wenn die tatsächliche Anzahl von Abfrageanforderungen jedoch den für max worker threads festgelegten Wert überschreitet, erstellt SQL Server einen Pool von Arbeitsthreads, damit die Anforderung vom nächsten verfügbaren Arbeitsthread verarbeitet werden kann.

Aktualisieren von SQL Server 2000

Die Standardeinstellung von max worker threads in SQL Server 2000 war 255. Beim Aktualisieren einer Instanz des SQL Server 2000 Database Engine (Datenbankmodul) auf eine neuere Version wird der Konfigurationswert für die Option max worker threads beibehalten. Wenn ein Update durchgeführt wird, sollte der neue Instanzwert für max worker threads geändert und auf 0 festgelegt werden, damit Database Engine (Datenbankmodul) die optimale Anzahl von Threads berechnen kann.

Festlegen von "max worker threads"

Bei max worker threads handelt es sich um eine erweiterte Option. Wenn Sie die Einstellung mithilfe der gespeicherten Systemprozedur sp_configure ändern, können Sie max worker threads nur ändern, wenn show advanced options auf 1 festgelegt ist. Das System muss neu gestartet werden, damit die neue Einstellung wirksam wird.

HinweisHinweis

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 und verfügbar wird. 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.