Pufferpoolerweiterung
Die In SQL Server 2014 eingeführte Pufferpoolerweiterung bietet die nahtlose Integration einer Nichtvolatile-Arbeitsspeichererweiterung (d. h. Solid-State-Laufwerk) in den Pufferpool der Datenbank-Engine, um den E/A-Durchsatz erheblich zu verbessern. Die Pufferpoolerweiterung ist nicht in jeder SQL Server -Edition verfügbar. Weitere Informationen finden Sie unter Features Supported by the Editions of SQL Server 2014.
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 weist zwei Mechanismen auf: den Puffer-Manager, mit dem auf Datenbankseiten zugegriffen wird und mit dem sie aktualisiert werden, und den Pufferpool, mit dem Datenbankdatei-E/A-Vorgänge reduziert werden.
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) auf persistente Weise. Weitere Informationen finden Sie unter dieser Definition.
Puffer In SQL Server ist ein Puffer eine 8-KB-Seite im Arbeitsspeicher mit der gleichen 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 Wird 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 während des Startvorgangs bestimmt oder wenn die Instanz von SQL Server mithilfe von sp_configure dynamisch neu konfiguriert wird. Diese Größe bestimmt die maximale Anzahl der Seiten, die jederzeit im Pufferpool in der aktuellen Instanz zwischengespeichert werden können.
Prüfpunkt Ein Prüfpunkt erstellt einen bekannten guten Punkt, ab dem datenbank-Engine nach einem unerwarteten Herunterfahren oder Absturz mit der Anwendung von Änderungen im Transaktionsprotokoll während der Wiederherstellung beginnen kann. 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 der 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.
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 ersten Aktivieren der Pufferpoolerweiterung empfiehlt es sich, die SQL Server-Instanz neu zu starten, um die maximalen Leistungsvorteile zu erhalten.
Die Pufferpoolerweiterungsgröße kann maximal das 32fache des Max_server_memory-Werts für Enterprise-Editionen und maixmal das 4fache für die Standard-Edition betragen. Es wird empfohlen, ein Verhältnis von 1:16 oder kleiner zwischen der Größe des physischen Arbeitsspeichers (max_server_memory) und der Größe der Pufferpoolerweiterung beizubehalten. 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.
Rückgabeinformationen 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 | 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. | number_page first_page_id first_page_offset initiator_numa_node_id |
sqlserver.buffer_pool_extension_pages_read | Wird ausgelöst, wenn eine Seite aus der Pufferpoolerweiterungsdatei in den Pufferpool gelesen wird. | number_page first_page_id first_page_offset initiator_numa_node_id |
sqlserver.buffer_pool_extension_pages_evicted | Wird ausgelöst, wenn eine Seite aus der Pufferpoolerweiterungsdatei entfernt wird. | number_page first_page_id first_page_offset initiator_numa_node_id |
sqlserver.buffer_pool_eviction_thresholds_recalculated | Wird ausgelöst, wenn der Entfernungsschwellenwert berechnet wird. | warm_threshold cold_threshold pages_bypassed_eviction eviction_bypass_reason eviction_bypass_reason_description |
Related Tasks
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 |