Freigeben über


Rechenkapazitätsgrenzen von bestimmten Editionen von SQL Server

Gilt für: SQL Server

In diesem Artikel wird erläutert, wie Sie Kapazitätsgrenzen für Editionen von SQL Server berechnen und wie diese sich in physischen und virtuellen Umgebungen mit simultanen Hyperthread-Prozessoren unterscheiden. Auf Intel CPUs wird SMT als Hyperthreading bezeichnet.

Übersicht

Diagramm: Zuordnungen zu Rechenkapazitätsgrenzen.

In dieser Tabelle werden die Schreibweisen im vorigen Diagramm beschrieben:

Wert BESCHREIBUNG
0..1 Null oder Eins
1 Genau eins
1..* Ein oder mehr
0..* 0 oder mehr
1..2 Eine oder zwei

Weitere Details:

  • Ein virtueller Computer (VM) weist einen oder mehrere virtuelle Prozessoren auf.
  • Ein oder mehrere virtuelle Prozessoren werden genau einem virtuellem Computer zugeordnet.
  • 0 (null) oder ein virtueller Prozessor wird null oder mehreren logischen Prozessoren zugeordnet. Die Zuordnung virtueller Prozessoren zu logischen Prozessoren ist wie folgt:
    • 1:0: stellt einen ungebundenen logischen, von den Gastbetriebssystemen nicht verwendeten Prozessor dar.
    • 1:viele: stellt einen Overcommit dar.
    • 0:viele: stellt die Abwesenheit des virtuellen Computers auf dem Hostsystem dar. Also den Fall, dass virtuelle Computer keine logischen Prozessoren verwenden.
  • Ein Socket wird null oder mehr Kernen zugeordnet. Die Zuordnung Socket zu Kern kann wie folgt sein:
    • 1:0: stellt einen leeren Socket dar. Es ist kein Chip installiert.
    • 1:1: stellt einen im Socket installierten Einzelkern-Chip dar. Diese Zuordnung ist heutzutage selten.
    • 1:viele: stellt einen im Socket installierten Mehrkern-Chip dar. Typische Werte sind 2, 4 und 8.
  • Ein Kern wird einem oder zwei logischen Prozessoren zugeordnet. Die Zuordnung von Kernen zu logischen Prozessoren ist wie folgt:
    • 1:1: SMT ist deaktiviert.
    • 1:2: SMT ist aktiviert.

Die folgenden Definitionen gelten für die in diesem Artikel verwendeten Begriffe:

  • Ein Thread oder logischer Prozessor ist aus der Sicht von SQL Server bzw. aus der Sicht des Betriebssystems, einer Anwendung oder eines Treibers eine logische Computer-Engine.

  • Ein Kern ist eine Prozessoreinheit. Sie kann aus einem oder mehreren logischen Prozessoren bestehen.

  • Ein physischer Prozessor kann aus einem oder mehreren Kernen bestehen. Ein physischer Prozessor ist das Gleiche wie ein Prozessorpaket oder ein Socket.

Beschränken der Anzahl der logischen Kerne pro NUMA-Knoten auf 64

Auf Servern mit mehr als 64 logischen Prozessoren pro NUMA-Knoten können Probleme wie Stapelabbilder auftreten. Eine BIOS- oder Firmwarekonfiguration kann die logische Kernanzahl, die dem Betriebssystem angezeigt wird, auf maximal 64 logische Prozessoren pro NUMA-Knoten reduzieren.

Achtung

Mit SQL Server 2022 (16.x) Kumulatives Update 11 gab es eine grundlegende Änderung. Die Datenbank-Engine wird nicht gestartet, wenn mehr als 64 Logische Kerne pro NUMA-Knoten erkannt werden.

Ab SQL Server 2022 (16.x) kumulatives Update 15 erzeugt das Setup eine Warnung, dass diese Konfiguration nicht unterstützt wird und dazu führt, dass der Datenbankmoduldienst beendet und deaktiviert wird. Die Warnung ist auch in den Setupprotokollen enthalten.

Sie können die Anzahl logischer Kerne pro NUMA-Knoten auf einer virtuellen Azure-Maschine reduzieren, indem Sie SMT deaktivieren. Für Bare-Metal-SQL Server-Instanzen können Sie die Anzahl logischer Kerne mit den Optionen für Sub-NUMA-Clustering (SNC) oder Nodes pro Socket (NPS) reduzieren.

Deaktivieren von SMT in einer virtuellen Azure-Maschine

SQL Server verfügt über eine unterstützte Grenze von 64 logischen Kernen pro NUMA-Knoten. In einigen Fällen kann die VM der Azure Mv3-Serie diesen Grenzwert überschreiten, was verhindert, dass SQL Server gestartet wird oder die Ausführung mit beeinträchtigter Leistung möglich ist. Um SMT zu deaktivieren, nehmen Sie die folgenden Änderungen mithilfe von PowerShell und dem Registrierungs-Editor (reg.exe) vor. Stellen Sie sicher, dass Sie Ihre Registrierung sichern, bevor Sie sie bearbeiten.

  1. Überprüfen Sie die Anzahl der logischen Kerne. SMT ist aktiviert, wenn das Verhältnis 2:1 ist (die Anzahl der logischen Kerne ist doppelt die Anzahl der Kerne).

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    
  2. Deaktivieren Sie SMT mit den folgenden beiden Registrierungsänderungen und starten Sie dann den virtuellen Computer neu.

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 8264 /f
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
    
  3. Überprüfen Sie erneut die Anzahl der logischen Kerne. Die Anzahl der logischen Kerne sollte mit der Anzahl der Kerne übereinstimmen.

    Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
    

Reduzieren der Anzahl der logischen Kerne für Bare-Metal-Computer-Instances

In den folgenden Tabellen wird beschrieben, wie Sie die Anzahl der logischen Kerne für Bare-Metal-Computer-Instances von SQL Server reduzieren.

Auf Intel-CPUs können Sie sub-NUMA Clustering (SNC), früher Cluster-on-Die (CoD) genannt, aktivieren, was zu zwei NUMA-Domänen innerhalb eines einzigen physischen Sockets führt.

Konfigurationseinstellung Beschreibung
SNC-deaktiviert (Standardeinstellung) Deaktiviert das Sub-NUMA-Clustering.
SNC-aktiviert Aktiviert sub-NUMA-Clustering.

Auf AMD-CPUs können Sie verschiedene Knoten pro Socket (NPS)-Optionen aktivieren.

Konfigurationseinstellung Beschreibung
NPS0 In einem dualen Socketsystem wird NUMA als einzelner Knoten mit allen Speicherkanälen dargestellt, die über den Knoten verteilt sind.
NPS1 (Standard) Diese Konfiguration stellt einen NUMA-Knoten pro Socket dar.
NPS2 Diese Konfiguration stellt zwei NUMA-Knoten pro Socket dar, ähnlich wie SNC.
NPS4 Diese Konfiguration stellt vier NUMA-Knoten pro Socket dar.

Hinweise

Systeme mit mehr als einem physischen Prozessor oder Systeme mit physischen Prozessoren, die mehrere Kerne und/oder SMT haben, ermöglichen dem Betriebssystem, mehrere Tasks gleichzeitig auszuführen. Jeder Thread der Ausführung wird als logischer Prozessor angezeigt. Wenn Ihr Computer z. B. zwei Quad-Core-Prozessoren mit aktiviertem SMT und zwei Threads pro Kern aufweist, verfügen Sie über 16 logische Prozessoren: 2 Prozessoren × 4 Kerne pro Prozessor × 2 Threads pro Kern. Beachten Sie Folgendes:

  • Die Rechenkapazität eines logischen Prozessors von einem einzelnen Thread eines SMT-Kerns ist geringer als die Rechenkapazität eines logischen Prozessors von diesem gleichen Kern mit deaktiviertem SMT.

  • Die Rechenkapazität der zwei logischen Prozessoren im SMT-Kern ist größer als die Rechenkapazität des gleichen Kerns mit deaktiviertem SMT.

Jede Edition von SQL Server hat zwei Rechenkapazitätsgrenzen:

  • Die maximale Anzahl von Sockets (oder physischen Prozessoren oder Prozessorpaketen)

  • Die maximale Anzahl von Kernen, die vom Betriebssystem gemeldet wird

Diese Begrenzungen gelten für eine einzelne Instanz von SQL Server. Sie stellen die maximale Rechenkapazität dar, die eine einzelne Instanz verwendet. Sie schränken den Server nicht ein, auf dem die Instanz möglicherweise bereitgestellt wird. Vielmehr stellt die Bereitstellung mehrerer SQL Server-Instanzen auf demselben physischen Server eine effiziente Möglichkeit dar, die Rechenkapazität eines physischen Servers mit mehr Sockets und/oder Kernen zu nutzen, als es die Kapazitätsgrenzen zulassen.

Die folgende Tabelle gibt die Rechenkapazitätsgrenzen für eine einzelne Instanz jeder Edition von SQL Serveran:

SQL Server -Edition Maximale Rechenkapazität für eine einzelne Instanz (SQL Server-Datenbank-Engine) Maximale Rechenkapazität für eine einzelne Instanz (AS, RS)
Enterprise Edition: core-basierte Lizenzierung 1 Maximum des Betriebssystems Maximum des Betriebssystems
Entwickler Maximum des Betriebssystems Maximum des Betriebssystems
Standard Beschränkt auf weniger als 4 Sockets oder 24 Kerne Beschränkt auf weniger als 4 Sockets oder 24 Kerne
Express Beschränkt auf weniger als 1 Socket oder 4 Kerne Beschränkt auf weniger als 1 Socket oder 4 Kerne

1 Die Enterprise Edition mit einer Lizenzierung in Form von Serverlizenz + Clientzugriffslizenz (CAL) ist auf maximal 20 Kerne pro SQL Server-Instanz beschränkt. (Diese Lizenzierung ist für neue Verträge nicht verfügbar.) Für das auf Prozessorkernen basierende Serverlizenzierungsmodell gelten keine Beschränkungen.

In einer virtualisierten Umgebung beruht die Beschränkung der Rechenkapazität auf der Anzahl der logischen Prozessoren, nicht der Kerne. Dies hat den Grund, dass die Prozessorarchitektur für die Gastanwendungen nicht sichtbar ist.

Ein Server mit vier Sockets beispielsweise, bestückt mit Quad-Core-Prozessoren und der Fähigkeit, zwei SMT-Threads pro Kern zu aktivieren, enthält mit aktiviertem SMT 32 logische Prozessoren. Er enthält jedoch mit deaktiviertem SMT nur 16 logische Prozessoren. Diese logischen Prozessoren können virtuellen Computern auf dem Server zugeordnet werden. Die Rechenlast des virtuellen Computers auf diesem logischen Prozessor wird einem Ausführungs-Thread auf dem physischen Prozessor im Hostserver zugeordnet.

Es kann daher sinnvoll sein, SMT zu deaktivieren, wenn die Leistung der einzelnen virtuellen Prozessoren wichtig ist. Sie können das SMT anhand einer BIOS-Einstellung für den Prozessor während des BIOS-Setups konfigurieren, aber es ist in der Regel ein Vorgang im Serverbereich, der sich auf alle Arbeitsauslastungen auswirkt, die auf dem Server ausgeführt werden. Sie können in Betracht ziehen, Workloads, die in virtuellen Umgebungen ausgeführt werden, von solchen zu trennen, die in der Umgebung eines physischen Betriebssystemus von der Leistungssteigerung durch SMT profitieren würden.

Hilfe erhalten

Zur SQL-Dokumentation beitragen

Wussten Sie schon, dass Sie SQL-Inhalte selbst bearbeiten könnten? Hierdurch helfen Sie nicht nur mit, unsere Dokumentation zu verbessern, sondern Sie werden auch als Mitwirkender an der Seite aufgeführt.

Weitere Informationen finden Sie unter Mitwirken an der SQL Server-Dokumentation.