PufferpoolerweiterungBuffer Pool Extension

Seit SQL Server 2014SQL Server 2014ermöglicht die Pufferpoolerweiterung die nahtlose Integration einer NVRAM (Non-Volatile Random Access Memory)-Erweiterung, d. h. Solid State Drive, in den DatenbankmodulDatabase Engine -Pufferpool, um den E/A-Durchsatz deutlich zu verbessern.Introduced in SQL Server 2014SQL Server 2014, the buffer pool extension provides the seamless integration of a nonvolatile random access memory (that is, solid-state drive) extension to the DatenbankmodulDatabase Engine buffer pool to significantly improve I/O throughput. Die Pufferpoolerweiterung ist nicht in jeder SQL ServerSQL Server -Edition verfügbar.The buffer pool extension is not available in every SQL ServerSQL Server edition. Weitere Informationen finden Sie unter Von den SQL Server 2016-Editionen unterstützte Funktionen.For more information, see Features Supported by the Editions of SQL Server 2016.

Vorteile der PufferpoolerweiterungBenefits of the Buffer Pool Extension

Der Hauptzweck einer SQL ServerSQL Server -Datenbank ist das Speichern und Abrufen von Daten. Daher stellt eine hohe Ein-/Ausgabe auf dem Datenträger ein Hauptmerkmal des Datenbankmoduls dar.The primary purpose of a SQL ServerSQL Server database is to store and retrieve data, so intensive disk I/O is a core characteristic of the Database Engine. Datenträger-E/A-Vorgänge beanspruchen ggf. viele Ressourcen und benötigen relativ viel Zeit für die Ausführung. Daher ist SQL ServerSQL Server so konzipiert, dass E/A-Vorgänge möglichst effizient gestaltet werden.Because disk I/O operations can consume many resources and take a relatively long time to finish, SQL ServerSQL Server focuses on making I/O highly efficient. Der Pufferpool ist eine primäre Speicherbelegungsquelle von SQL ServerSQL Server.The buffer pool serves as a primary memory allocation source of SQL ServerSQL Server. Die Pufferverwaltung ist eine zentrale Komponente zum Erreichen dieser Effizienz.Buffer management is a key component in achieving this efficiency. 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.The buffer management component consists of two mechanisms: the buffer manager to access and update database pages, and the buffer pool), to reduce database file I/O.

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.Data and index pages are read from disk into the buffer pool and modified pages (also known as dirty pages) are written back to disk. 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.Memory pressure on the server and database checkpoints cause hot (active) dirty pages in the buffer cache to be evicted from the cache and written to mechanical disks and then read back into the cache. 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.These I/O operations are typically small random reads and writes on the order of 4 to 16 KB of data. 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.Small random I/O patterns incur frequent seeks, competing for the mechanical disk arm, increasing I/O latency, and reducing aggregate I/O throughput of the system.

Der normale Ansatz zum Beheben dieser E/A-Engpässe besteht darin, mehr DRAM hinzuzufügen oder leistungsstarke SAS-Spindeln hinzuzufügen.The typical approach to resolving these I/O bottlenecks is to add more DRAM, or alternatively, added high-performance SAS spindles. 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.While these options are helpful, they have significant drawbacks: DRAM is more expensive than data storage drives and adding spindles increases capital expenditure in hardware acquisition and increases operational costs by increased power consumption and increased probability of component failure.

Die Pufferpoolerweiterungsfunktion erweitert den Pufferpoolcache um nicht flüchtigen Speicher (üblicherweise SSD).The buffer pool extension feature extends the buffer pool cache with nonvolatile storage (usually 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.Because of this extension, the buffer pool can accommodate a larger database working set, which forces the paging of I/Os between RAM and the SSDs. Dies verlagert effektiv kleine zufällige E/A-Vorgänge von den mechanischen Datenträgern auf SSDs.This effectively offloads small random I/Os from mechanical disks to SSDs. Aufgrund der niedrigeren Latenzzeit und besser verteilten zufälligen E/A-Zugriffen von SSDs verbessert die Pufferpoolerweiterung erheblich den E/A-Durchsatz.Because of the lower latency and better random I/O performance of SSDs, the buffer pool extension significantly improves I/O throughput.

Die folgende Liste beschreibt die Vorteile der Pufferpoolerweiterungsfunktion.The following list describes the benefits of the buffer pool extension feature.

  • Verbesserter Durchsatz bei zufällig verteilten E/A-ZugriffenIncreased random I/O throughput

  • Reduzierte E/A-LatenzzeitReduced I/O latency

  • Verbesserter TransaktionsdurchsatzIncreased transaction throughput

  • Verbesserte Leseleistung mit einem größeren hybriden PufferpoolImproved read performance with a larger hybrid buffer pool

  • Eine Cachingarchitektur, die aktuelle und zukünftige kostengünstige Speicherlaufwerke nutzen kannA caching architecture that can take advantage of present and future low-cost memory drives

KonzepteConcepts

Die folgenden Begriffe sind auf die Pufferpoolerweiterungsfunktion anwendbar.The following terms are applicable to the buffer pool extension feature.

Solid State Drive (SSD)Solid-state drive (SSD)
Solid State Drives speichern Daten im Arbeitsspeicher (RAM) in einer persistenten Weise.Solid-state drives store data in memory (RAM) in a persistent manner. Weitere Informationen finden Sie unter dieser Definition.For more information, see this definition.

PufferBuffer
In SQL ServerSQL Serverist ein Puffer eine 8-KB-Seite im Arbeitsspeicher. Dies entspricht der Größe einer Datenseite oder Indexseite.In SQL ServerSQL Server, A buffer is an 8-KB page in memory, the same size as a data or index page. Der Puffercache ist ebenfalls in Seiten von je 8 KB unterteilt.Thus, the buffer cache is divided into 8-KB pages. Eine Seite verbleibt im Puffercache, bis der Pufferbereich vom Puffer-Manager zum Laden weiterer Daten benötigt wird.A page remains in the buffer cache until the buffer manager needs the buffer area to read in more data. Daten werden nur dann zurück auf den Datenträger geschrieben, wenn sie geändert wurden.Data is written back to disk only if it is modified. Diese geänderten Seiten im Arbeitsspeicher werden als modifizierte Seiten bezeichnet.These in-memory modified pages are known as dirty pages. Eine Seite gilt als nicht modifiziert, wenn sie ihrem Datenbankbild auf dem Datenträger entspricht.A page is clean when it is equivalent to its database image on disk. Daten im Puffercache können mehrfach geändert werden, bevor sie zurück auf den Datenträger geschrieben werden.Data in the buffer cache can be modified multiple times before being written back to disk.

PufferpoolBuffer pool
Auch als Puffercache bezeichnet.Also called buffer cache. Der Pufferpool ist eine globale Ressource, die von allen Datenbanken für ihre zwischengespeicherten Datenseiten verwendet wird.The buffer pool is a global resource shared by all databases for their cached data pages. 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.The maximum and minimum size of the buffer pool cache is determined during startup or when the instance of SQL server is dynamically reconfigured by using sp_configure. Diese Größe bestimmt die maximale Anzahl der Seiten, die jederzeit im Pufferpool in der aktuellen Instanz zwischengespeichert werden können.This size determines the maximum number of pages that can be cached in the buffer pool at any time in the running instance.

Der maximale Arbeitsspeicher, für den von der Pufferpoolerweiterung ein Commit ausgeführt werden kann, kann von den anderen Clientanwendungen eingeschränkt werden, die auf dem Computer ausgeführt werden, sofern diese Arbeitsspeicher erheblich beanspruchen.The maximum memory that can be comitted by Buffer Pool Extension can be limited by the other applications running on the machine in case those create significant memory pressure.

PrüfpunktCheckpoint
Ein Prüfpunkt erstellt einen bekannten fehlerfreien Punkt, von dem aus das DatenbankmodulDatabase Engine Änderungen übernehmen kann, die im Transaktionsprotokoll während der Wiederherstellung nach einem unerwarteten Herunterfahren oder einem Absturz enthalten sind.A checkpoint creates a known good point from which the DatenbankmodulDatabase Engine can start applying changes contained in the transaction log during recovery after an unexpected shutdown or crash. Ein Prüfpunkt schreibt die modifizierten Seiten und Transaktionsprotokollinformationen vom Arbeitsspeicher auf den Datenträger und erfasst auch Informationen zum Transaktionsprotokoll.A checkpoint writes the dirty pages and transaction log information from memory to disk and, also, records information about the transaction log. Weitere Informationen finden Sie unter Datenbankprüfpunkte (SQL Server).For more information, see Database Checkpoints (SQL Server).

Details der PufferpoolerweiterungBuffer Pool Extension Details

SSD-Speicher wird als Erweiterung des Arbeitsspeichersubsystems statt des Festplattenspeichersubsystems verwendet.SSD storage is used as an extension to the memory subsystem rather than the disk storage subsystem. 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.That is, the buffer pool extension file allows the buffer pool manager to use both DRAM and NAND-Flash memory to maintain a much larger buffer pool of lukewarm pages in nonvolatile random access memory backed by SSDs. Hierdurch wird eine mehrstufige Zwischenspeicherhierarchie mit Ebene 1 (L1) als DRAM und Ebene 2 (L2) als Pufferpoolerweiterungsdatei auf SSD erstellt.This creates a multilevel caching hierarchy with level 1 (L1) as the DRAM and level 2 (L2) as the buffer pool extension file on the SSD. Nur nicht modifizierte Seiten werden in den L2-Cache geschrieben, um mehr Datensicherheit zu gewährleisten.Only clean pages are written to the L2 cache, which helps maintain data safety. Der Puffer-Manager ist für die Verschiebung der nicht modifizierten Seiten zwischen dem L1- und L2-Cache zuständig.The buffer manager handles the movement of clean pages between the L1 and L2 caches.

Die folgende Abbildung zeigt eine allgemeine Architekturübersicht des Pufferpools im Vergleich zu anderen SQL ServerSQL Server -Komponenten.The following illustration provides a high-level architectural overview of the buffer pool relative to other SQL ServerSQL Server components.

Architektur der SSD-PufferpoolerweiterungSSD Buffer Pool Extension Architecture

Wenn sie aktiviert ist, gibt die Pufferpoolerweiterung die Größe und den Dateipfad der Pufferpoolzwischenspeicherdatei auf dem SSD an.When enabled, the buffer pool extension specifies the size and file path of the buffer pool caching file on the SSD. Diese Datei ist ein zusammenhängender Speicherbereich auf dem SSD und wird beim Starten der Instanz von SQL ServerSQL Serverstatisch konfiguriert.This file is a contiguous extent of storage on the SSD and is statically configured during startup of the instance of SQL ServerSQL Server. Änderungen an den Dateikonfigurationsparametern können nur ausgeführt werden, wenn die Pufferpoolerweiterungsfunktion deaktiviert ist.Alterations to the file configuration parameters can only be done when the buffer pool extension feature is disabled. Wenn die Pufferpoolerweiterung deaktiviert wird, werden alle zugehörigen Konfigurationseinstellungen aus der Registrierung entfernt.When the buffer pool extension is disabled, all related configuration settings are removed from the registry. Die Pufferpoolerweiterungsdatei wird nach dem Herunterfahren der SQL Server-Instanz gelöscht.The buffer pool extension file is deleted upon shutdown of the instance of SQL Server.

Bewährte MethodenBest Practices

Es wird empfohlen, nach den folgenden bewährten Methoden vorzugehen.We recommend that you follow these best practices.

  • Nach dem ersten Aktivieren der Pufferpoolerweiterung empfiehlt es sich, die SQL Server-Instanz neu zu starten, um die maximalen Leistungsvorteile zu erhalten.After enabling Buffer Pool Extension for the first time it is recommended to restart the SQL Server instance to get the maximum performance benefits.

  • Die Pufferpoolerweiterungsgröße kann maximal das 32fache des max_server_memory-Werts betragen.The buffer pool extension size can be up to 32 times the value of max_server_memory. 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.We recommend a ratio between the size of the physical memory (max_server_memory) and the size of the buffer pool extension of 1:16 or less. Ein niedrigeres Verhältnis im Bereich von 1:4 bis 1:8 kann optimal sein.A lower ratio in the range of 1:4 to 1:8 may be optimal. Informationen zum Einrichten der max_server_memory-Option finden Sie unter Serverkonfigurationsoptionen für den Serverarbeitsspeicher.For information about setting the max_server_memory option, see Server Memory Server Configuration Options.

  • Testen Sie die Pufferpoolerweiterung gründlich, bevor Sie sie in einer Produktionsumgebung implementieren.Test the buffer pool extension thoroughly before implementing in a production environment. Vermeiden Sie in der Produktionsumgebung, Konfigurationsänderungen an der Datei vorzunehmen oder die Funktion zu deaktivieren.Once in production, avoid making configuration changes to the file or turning the feature off. 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.These activities may have a negative impact on server performance because the buffer pool is significantly reduced in size when the feature is disabled. 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.When disabled, the memory used to support the feature is not reclaimed until the instance of SQL Server is restarted. Beim erneuten Aktivieren der Funktion wird der Arbeitsspeicher jedoch sofort wiederverwendet, ohne dass ein Neustart der Instanz erforderlich ist.However, if the feature is re-enabled, the memory will be reused without restarting the instance.

Rückgabeinformationen zur PufferpoolerweiterungReturn Information about the Buffer Pool Extension

Sie können die folgenden dynamischen Verwaltungssichten verwenden, um die Konfiguration der Pufferpoolerweiterung anzuzeigen und Informationen über die Datenseiten in der Erweiterung zurückzugeben.You can use the following dynamic management views to display the configuration of the buffer pool extension and return information about the data pages in the extension.

XEventXEvent BeschreibungDescription ParameterParameters
sqlserver.buffer_pool_extension_pages_writtensqlserver.buffer_pool_extension_pages_written Wird ausgelöst, wenn eine Seite oder eine Gruppe von Seiten aus dem Pufferpool in die Pufferpoolerweiterungsdatei geschrieben werden.Fires when a page or group of pages are evicted from the buffer pool and written to the buffer pool extension file. number_pagenumber_page

first_page_idfirst_page_id

first_page_offsetfirst_page_offset

initiator_numa_node_idinitiator_numa_node_id
sqlserver.buffer_pool_extension_pages_readsqlserver.buffer_pool_extension_pages_read Wird ausgelöst, wenn eine Seite aus der Pufferpoolerweiterungsdatei in den Pufferpool gelesen wird.Fires when a page is read from the buffer pool extension file to the buffer pool. number_pagenumber_page

first_page_idfirst_page_id

first_page_offsetfirst_page_offset

initiator_numa_node_idinitiator_numa_node_id
sqlserver.buffer_pool_extension_pages_evictedsqlserver.buffer_pool_extension_pages_evicted Wird ausgelöst, wenn eine Seite aus der Pufferpoolerweiterungsdatei entfernt wird.Fires when a page is evicted from the buffer pool extension file. number_pagenumber_page

first_page_idfirst_page_id

first_page_offsetfirst_page_offset

initiator_numa_node_idinitiator_numa_node_id
sqlserver.buffer_pool_eviction_thresholds_recalculatedsqlserver.buffer_pool_eviction_thresholds_recalculated Wird ausgelöst, wenn der Entfernungsschwellenwert berechnet wird.Fires when the eviction threshold is calculated. warm_thresholdwarm_threshold

cold_thresholdcold_threshold

pages_bypassed_evictionpages_bypassed_eviction

eviction_bypass_reasoneviction_bypass_reason

eviction_bypass_reason_descriptioneviction_bypass_reason_description
TaskbeschreibungTask Description ThemaTopic
Aktivieren und Konfigurieren der Pufferpoolerweiterung.Enable and configure the buffer pool extension. ALTER SERVER CONFIGURATION (Transact-SQL)ALTER SERVER CONFIGURATION (Transact-SQL)
Ändern der Konfiguration der PufferpoolerweiterungModify the buffer pool extension configuration ALTER SERVER CONFIGURATION (Transact-SQL)ALTER SERVER CONFIGURATION (Transact-SQL)
Anzeigen der Konfiguration der PufferpoolerweiterungView the buffer pool extension configuration sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)
Überwachen der PufferpoolerweiterungMonitor the buffer pool extension sys.dm_os_buffer_descriptors (Transact-SQL)sys.dm_os_buffer_descriptors (Transact-SQL)

LeistungsindikatorenPerformance counters