Freigeben über


Thread- und Taskarchitektur

Threads sind ein Feature des Betriebssystems, das ermöglicht, Anwendungslogik auf mehrere gleichzeitige Ausführungspfade zu verteilen. Dieses Feature ist insbesondere dann hilfreich, wenn komplexe Anwendungen viele Tasks besitzen, die gleichzeitig ausgeführt werden können.

Wenn ein Betriebssystem eine Instanz einer Anwendung ausführt, wird eine als Prozess bezeichnete Einheit erstellt, um die Instanz zu verwalten. Der Prozess besitzt einen so genannten Ausführungsthread. Dabei handelt es sich um eine Folge von Programmieranweisungen, die vom Anwendungscode ausgeführt werden. In einer einfachen Anwendung beispielsweise, mit einem einzigen Satz an Anweisungen, die seriell ausgeführt werden können, gibt es nur einen Ausführungspfad oder -thread durch die Anwendung. Komplexere Anwendungen können mehrere Tasks besitzen, die gleichzeitig anstatt seriell ausgeführt werden können. Dies erfolgt, indem die Anwendung einen eigenen Prozess für jeden Task startet. Das Starten eines Prozesses ist jedoch ein ressourcenintensiver Vorgang, der vermieden werden kann, indem die Anwendung anstelle von Prozessen separate Threads startet. Dieser Vorgang nimmt weniger Ressourcen in Anspruch. Außerdem kann das Ausführen der einzelnen Threads unabhängig von anderen Threads geplant werden, die einem Prozess zugeordnet sind.

Threads ermöglichen, dass komplexe Anwendungen CPUs effizienter verwenden; dies gilt auch für Computer mit nur einer CPU. Bei einer einzigen CPU kann zu einem bestimmten Zeitpunkt immer nur ein Thread ausgeführt werden. Wenn ein Thread einen umfangreiche Vorgang ausführt, für die die CPU nicht verwendet wird, z. B. beim Lesen oder Schreiben vom bzw. auf den Datenträger, kann so lange ein anderer Thread ausgeführt werden, bis der erste Vorgang beendet ist. Da es möglich ist, Threads auszuführen, während andere Threads auf das Abschließen eines Vorgangs warten, kann eine Anwendung die CPU optimal nutzen. Dies gilt insbesondere für Multibenutzeranwendungen mit umfangreichen E/A-Vorgängen, wie es bei einem Datenbankserver der Fall ist. Computer mit mehreren Mikroprozessoren oder CPUs können gleichzeitig nur einen Thread pro CPU ausführen. Wenn ein Computer beispielsweise über acht CPUs verfügt, können gleichzeitig acht Threads ausgeführt werden.

In diesem Abschnitt

Thema Beschreibung

Planen von Batches oder Tasks in SQL Server

Beschreibt, wie Threads oder Fibers für Batches oder Tasks geplant werden.

Reservieren von Threads für eine CPU

Beschreibt, wie das Betriebssystem Threads von Instanzen von SQL Server gleichmäßig auf die Mikroprozessoren eines Computers verteilt, und erläutert die affinity mask-Konfigurationsoption.

Verwenden der Option lightweight pooling

Beschreibt die Bedingungen, unter denen es sich empfiehlt, die Lightweightpooling-Option zu aktivieren.

Grundlegendes zu NUMA (Non-Uniform Memory Access)

Beschreibt die Änderungen, die in SQL Server 2005 vorgenommen wurden, um die NUMA-Architektur (Non-Uniform Memory Access) zu unterstützen.

Thread- und Fiberausführung

Beschreibt, wie Threads oder Fibers ausgeführt werden, und erläutert die Option zum Festlegen der Ausführungspriorität.

Siehe auch

Konzepte

Architektur des relationalen Datenbankmoduls

Hilfe und Informationen

Informationsquellen für SQL Server 2005