Freigeben über


Pufferpoolerweiterung

Die in SQL Server 2014 eingeführte Pufferpoolerweiterung integriert nahtlos eine Erweiterung des nichtflüchtigen Direktzugriffsspeichers (d. h. Solid-State-Laufwerk) in den Pufferpool des Datenbankmoduls, wodurch der E/A-Durchsatz erheblich verbessert wird. Die Pufferpoolerweiterung ist nicht in jeder SQL Server -Edition verfügbar. Weitere Informationen finden Sie unter Von den SQL Server 2014-Editionen unterstützte Funktionen.

Vorteile der Pufferpoolerweiterung

Der Hauptzweck einer SQL Server -Datenbank ist das Speichern und Abrufen von Daten. Daher stellt eine hohe Ein-/Ausgabe auf dem Datenträger ein Hauptmerkmal der Datenbank-Engine dar. Datenträger-E/A-Vorgänge beanspruchen ggf. viele Ressourcen und benötigen relativ viel Zeit für die Ausführung. Daher ist SQL Server so konzipiert, dass E/A-Vorgänge möglichst effizient gestaltet werden. Der Pufferpool ist eine primäre Speicherbelegungsquelle von SQL Server. Die Pufferverwaltung ist eine zentrale Komponente zum Erreichen dieser Effizienz. Die Pufferverwaltungskomponente besteht aus zwei Mechanismen: dem Puffer-Manager für den Zugriff auf und die Aktualisierung von Datenbankseiten und dem Pufferpool, um die Datenbankdatei-E/A zu reduzieren.

Daten- und Indexseiten werden vom Datenträger in den Pufferpool gelesen und geänderte Seiten (auch bekannt als modifizierte Seiten) werden zurück auf den Datenträger geschrieben. Ungenügender Arbeitsspeicher auf den Server- und Datenbankprüfpunkten bewirkt heiße (aktive) modifizierte Seiten im Puffercache, die aus dem Cache entfernt und auf mechanische Datenträger geschrieben und dann wieder in den Cache gelesen werden. Diese E/A-Vorgänge sind in der Regel kleine zufällige Lese- und Schreibvorgänge in der Größenordnung von 4 bis 16 KB Daten. Kleine zufällige E/A-Muster verursachen häufige Suchen, die um den mechanischen Datenträgerarm konkurrieren, die E/A-Latenzzeit erhöhen und den aggregierten E/A-Durchsatz des Systems verringern.

Der normale Ansatz zum Beheben dieser E/A-Engpässe besteht darin, mehr DRAM hinzuzufügen oder leistungsstarke SAS-Spindeln hinzuzufügen. Auch wenn diese Optionen hilfreich sind, haben sie erhebliche Nachteile: DRAM ist teurer als Datenspeicherungslaufwerke, und das Hinzufügen von Spindeln erhöht den Investitionsaufwand bei der Hardwareanschaffung und die Betriebskosten durch erhöhte Leistungsaufnahme und erhöhte Wahrscheinlichkeit von Komponentenfehlern.

Die Pufferpoolerweiterungsfunktion erweitert den Pufferpoolcache um nicht flüchtigen Speicher (üblicherweise SSD). Aufgrund der Erweiterung kann der Pufferpool ein größeres Datenbankworkingset aufnehmen, das die Auslagerung von E/A-Vorgängen zwischen RAM und SSDs erzwingt. Dies verlagert effektiv kleine zufällige E/A-Vorgänge von den mechanischen Datenträgern auf SSDs. Aufgrund der niedrigeren Latenzzeit und besser verteilten zufälligen E/A-Zugriffen von SSDs verbessert die Pufferpoolerweiterung erheblich den E/A-Durchsatz.

Die folgende Liste beschreibt die Vorteile der Pufferpoolerweiterungsfunktion.

  • Verbesserter Durchsatz bei zufällig verteilten E/A-Zugriffen

  • Reduzierte E/A-Latenzzeit

  • Verbesserter Transaktionsdurchsatz

  • Verbesserte Leseleistung mit einem größeren hybriden Pufferpool

  • Eine Cachingarchitektur, die aktuelle und zukünftige kostengünstige Speicherlaufwerke nutzen kann

Konzepte

Die folgenden Begriffe sind auf die Pufferpoolerweiterungsfunktion anwendbar.

Solid-State Drive (SSD) Solid-State-Laufwerke speichern Daten im Arbeitsspeicher (RAM) dauerhaft. Weitere Informationen finden Sie unter dieser Definition.

Puffer in SQL Server ist ein Puffer eine 8-KB-Seite im Arbeitsspeicher, die gleiche Größe wie eine Daten- oder Indexseite. Der Puffercache ist ebenfalls in Seiten von je 8 KB unterteilt. Eine Seite verbleibt im Puffercache, bis der Pufferbereich vom Puffer-Manager zum Laden weiterer Daten benötigt wird. Daten werden nur dann zurück auf den Datenträger geschrieben, wenn sie geändert wurden. Diese geänderten Seiten im Arbeitsspeicher werden als modifizierte Seiten bezeichnet. Eine Seite gilt als nicht modifiziert, wenn sie ihrem Datenbankbild auf dem Datenträger entspricht. Daten im Puffercache können mehrfach geändert werden, bevor sie zurück auf den Datenträger geschrieben werden.

Pufferpool auch als Puffercache bezeichnet. Der Pufferpool ist eine globale Ressource, die von allen Datenbanken für ihre zwischengespeicherten Datenseiten verwendet wird. Die maximale und minimale Größe des Pufferpoolcaches wird beim Start oder beim dynamischen Neukonfigurieren der SQL Server-Instanz mithilfe von sp_configure bestimmt. Diese Größe bestimmt die maximale Anzahl der Seiten, die jederzeit im Pufferpool in der aktuellen Instanz zwischengespeichert werden können.

Prüfpunkt A erstellt einen bekannten guten Punkt, an dem das Datenbankmodul mit der Anwendung von Änderungen beginnen kann, die im Transaktionsprotokoll enthalten sind, während der Wiederherstellung nach einem unerwarteten Herunterfahren oder Absturz. Ein Prüfpunkt schreibt die modifizierten Seiten und Transaktionsprotokollinformationen vom Arbeitsspeicher auf den Datenträger und erfasst auch Informationen zum Transaktionsprotokoll. Weitere Informationen finden Sie unter Datenbankprüfpunkte (SQL Server).

Details zur Pufferpoolerweiterung

SSD-Speicher wird als Erweiterung des Arbeitsspeichersubsystems statt des Festplattenspeichersubsystems verwendet. Somit ermöglicht die Pufferpoolerweiterungsdatei dem Pufferpool-Manager, DRAM und NAND-Flasharbeitsspeicher zu verwenden, um einen wesentlich größeren Pufferpool von "lauwarmen" Seiten im nicht flüchtigen Speicher beizubehalten, der durch SSDs unterstützt wird. Hierdurch wird eine mehrstufige Zwischenspeicherhierarchie mit Ebene 1 (L1) als DRAM und Ebene 2 (L2) als Pufferpoolerweiterungsdatei auf SSD erstellt. Nur nicht modifizierte Seiten werden in den L2-Cache geschrieben, um mehr Datensicherheit zu gewährleisten. Der Puffer-Manager ist für die Verschiebung der nicht modifizierten Seiten zwischen dem L1- und L2-Cache zuständig.

Die folgende Abbildung zeigt eine allgemeine Architekturübersicht des Pufferpools im Vergleich zu anderen SQL Server -Komponenten.

SSD-Pufferpool-Erweiterungsarchitektur

Wenn sie aktiviert ist, gibt die Pufferpoolerweiterung die Größe und den Dateipfad der Pufferpoolzwischenspeicherdatei auf dem SSD an. Diese Datei ist ein zusammenhängender Speicherbereich auf dem SSD und wird beim Starten der Instanz von SQL Serverstatisch konfiguriert. Änderungen an den Dateikonfigurationsparametern können nur ausgeführt werden, wenn die Pufferpoolerweiterungsfunktion deaktiviert ist. Wenn die Pufferpoolerweiterung deaktiviert wird, werden alle zugehörigen Konfigurationseinstellungen aus der Registrierung entfernt. Die Pufferpoolerweiterungsdatei wird nach dem Herunterfahren der SQL Server-Instanz gelöscht.

Bewährte Methoden

Es wird empfohlen, nach den folgenden bewährten Methoden vorzugehen.

  • Nach dem erstmaligen Aktivieren der Pufferpoolerweiterung wird empfohlen, die SQL Server-Instanz neu zu starten, um die maximalen Leistungsvorteile zu erzielen.

  • Die Größe der Pufferpoolerweiterung kann bis zu 32 Mal der Wert von max_server_memory für Enterprise-Editionen und bis zu 4 Mal für Standard Editionen sein. Es wird ein Verhältnis zwischen der Größe des physischen Speichers (max_server_memory) und der Größe der Pufferpoolerweiterung von 1:16 oder weniger empfohlen. Ein niedrigeres Verhältnis im Bereich von 1:4 bis 1:8 kann optimal sein. Informationen zum Einrichten der max_server_memory-Option finden Sie unter Serverkonfigurationsoptionen für den Serverarbeitsspeicher.

  • Testen Sie die Pufferpoolerweiterung gründlich, bevor Sie sie in einer Produktionsumgebung implementieren. Vermeiden Sie in der Produktionsumgebung, Konfigurationsänderungen an der Datei vorzunehmen oder die Funktion zu deaktivieren. Diese Aktivitäten können negative Auswirkungen auf die Serverleistung haben, da die Größe des Pufferpools erheblich reduziert wird, wenn die Funktion deaktiviert ist. Wenn sie deaktiviert ist, wird der zur Unterstützung der Funktion verwendete Arbeitsspeicher erst wieder freigegeben, wenn die Instanz von SQL Server neu gestartet wird. Beim erneuten Aktivieren der Funktion wird der Arbeitsspeicher jedoch sofort wiederverwendet, ohne dass ein Neustart der Instanz erforderlich ist.

Zurückgeben von Informationen zur Pufferpoolerweiterung

Sie können die folgenden dynamischen Verwaltungssichten verwenden, um die Konfiguration der Pufferpoolerweiterung anzuzeigen und Informationen über die Datenseiten in der Erweiterung zurückzugeben.

Im Puffer-Manager-Objekt von SQL Server sind Leistungsindikatoren verfügbar, um die Datenseiten in der Pufferpoolerweiterungsdatei nachzuverfolgen. Weitere Informationen finden Sie unter Leistungsindikatoren für die Pufferpoolerweiterung.

Die folgenden XEvents sind verfügbar.

XEvent BESCHREIBUNG Die Parameter
sqlserver.buffer_pool_extension_pages_written Wird ausgelöst, wenn eine Seite oder eine Gruppe von Seiten aus dem Pufferpool in die Pufferpoolerweiterungsdatei geschrieben werden. Seitenzahl

first_page_id

first_page_offset

initiator_numa_node_id
sqlserver.Bufferpool-Erweiterungsseiten_gelesen Wird ausgelöst, wenn eine Seite aus der Pufferpoolerweiterungsdatei in den Pufferpool gelesen wird. seitenzahl

first_page_id

erste_Seitenversatz

initiator_numa_node_id
sqlserver.buffer_pool_erweiterungsseiten_ausgestoßen Wird ausgelöst, wenn eine Seite aus der Pufferpoolerweiterungsdatei entfernt wird. Seitenzahl

erste_Seiten_ID

Erste_Seite_Versatz

Initiator NUMA-Knoten-ID
sqlserver.buffer_pool_eviction_thresholds_recalculated Wird ausgelöst, wenn der Entfernungsschwellenwert berechnet wird. Warmschwelle

Kälteschwelle

Seiten_übersprungen_Verdrängung

Räumungsumgehungsgrund

Beschreibung_deaktivierungsumgehungsgrund
Taskbeschreibung Thema
Aktivieren und Konfigurieren der Pufferpoolerweiterung. ALTER SERVER CONFIGURATION (Transact-SQL)
Ändern der Konfiguration der Pufferpoolerweiterung ALTER SERVER CONFIGURATION (Transact-SQL)
Anzeigen der Konfiguration der Pufferpoolerweiterung sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)
Überwachen der Pufferpoolerweiterung sys.dm_os_buffer_descriptors (Transact-SQL)

Leistungsindikatoren