Hybrider PufferpoolHybrid Buffer Pool

GILT FÜR: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: YesSQL Server NoAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

In einem hybriden Pufferpool können Pufferpoolobjekte auf Datenseiten in Datenbankdateien verweisen, die sich auf persistenten Speichergeräten (persistent memory, PMEM) befinden, anstatt nur auf Kopien der Datenseiten, die im flüchtigen DRAM zwischengespeichert sind.Hybrid Buffer Pool enables buffer pool objects to reference data pages in database files residing on persistent memory (PMEM) devices, instead of copies of the data pages cached in volatile DRAM. Dieses Feature wird in SQL Server 2019 (15.x)SQL Server 2019 (15.x) eingeführt.This feature is introduced in SQL Server 2019 (15.x)SQL Server 2019 (15.x).

Hybrider Pufferpool

Persistente Speichergeräte sind byteadressierbar. Wenn ein PMEM-fähiges Dateisystem mit Direktzugriff (Direct Access, DAX) (z. B. XFS, EXT4 oder NTFS) verwendet wird, kann mithilfe der üblichen Dateisystem-APIs des Betriebssystems auf die Dateien im Dateisystem zugegriffen werden.Persistent memory (PMEM) devices are byte-addressable and if a direct access (DAX) persistent-memory aware file system (such as XFS, EXT4, or NTFS) is used, files on the file system can be accessed using the usual file system APIs in the OS. Alternativ können sogenannte Lade- und Speichervorgänge für die Speicherzuordnungen der Dateien auf dem Gerät ausgeführt werden.Alternatively, it can perform what is known as load and store operations against memory maps of the files on the device. Dies ermöglicht den PMEM-fähigen Anwendungen wie SQL Server, auf Dateien auf dem Gerät zuzugreifen, ohne den herkömmlichen Speicherstapel durchlaufen zu müssen.This allows PMEM aware applications such as SQL Server to access files on the device without traversing the traditional storage stack.

Der hybride Pufferpool verwendet diese Lade- und Speichervorgänge für im Speicher abgebildete Dateien, um das PMEM-Gerät als Cache für den Pufferpool und zum Speichern von Datenbankdateien zu nutzen.The hybrid buffer pool uses this ability to perform load and store operations against memory mapped files, to leverage the PMEM device as cache for the buffer pool as well as storing database files. Dadurch ergibt sich die außergewöhnliche Situation, dass logische und physische Lesevorgänge im Grunde genommen dasselbe sind.This creates the unique situation where both a logical read and a physical read are essentially the same operation. Persistente Speichergeräte können über den Speicherbus aufgerufen werden, genauso wie reguläres flüchtiges DRAM.Persistent memory devices are accessible via the memory bus just like regular volatile DRAM.

Nur nicht bearbeitete Datenseiten werden auf dem Gerät für den hybriden Pufferpool zwischengespeichert.Only clean data pages are cached on the device for the Hybrid Buffer Pool. Wenn eine Seite als geändert markiert ist, wird sie in den DRAM-Pufferpool kopiert, bevor sie schließlich zurück auf das PMEM-Gerät geschrieben und als nicht modifiziert markiert wird.When a page is marked as dirty, it is copied to the DRAM buffer pool before eventually being written back to the PMEM device and marked as clean again. Dies erfolgt bei regulären Prüfpunktvorgängen, ähnlich wie bei einem Standardblockgerät.This will occur during regular checkpoint operations in a manner similar to that performed against a standard block device.

Die Funktion für hybriden Pufferpool ist für Windows und Linux verfügbar.The hybrid buffer pool feature is available for both Windows and Linux. Das PMEM-Gerät muss mit einem Dateisystem formatiert sein, das DAX (DirectAccess) unterstützt.The PMEM device must be formatted with a filesystem that supports DAX (DirectAccess). Die Dateisysteme XFS, EXT4 und NTFS bieten Unterstützung für DAX.XFS, EXT4, and NTFS file systems all have support for DAX. SQL Server erkennt automatisch, ob sich Datendateien auf einem entsprechend formatierten PMEM-Gerät befinden, und führt die Speicherzuordnung von Datenbankdateien beim Start aus, wenn eine neue Datenbank angefügt, wiederhergestellt oder erstellt wird.SQL Server will automatically detect if data files reside on an appropriately formatted PMEM device and perform memory mapping of database files upon startup, when a new database is attached, restored, or created.

Weitere Informationen finden Sie unterFor more information, see:

Aktivieren des hybriden PufferpoolsEnable hybrid buffer pool

Mit SQL Server 2019 (15.x)SQL Server 2019 (15.x) wird DDL (Dynamic Data Language) zum Steuern des hybriden Pufferpools eingeführt.SQL Server 2019 (15.x)SQL Server 2019 (15.x) introduces dynamic data language (DDL) to control hybrid buffer pool.

Im folgenden Beispiel wird der hybride Pufferpool für eine Instanz von SQL Server aktiviert:The following example enables hybrid buffer pool for an instance of SQL Server:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;

Standardmäßig ist der hybride Pufferpool für die gesamte Instanz deaktiviert.By default, hybrid buffer pool is disabled at the instance scope. Beachten Sie, dass die SQL Server-Instanz neu gestartet werden muss, damit die Einstellungsänderung in Kraft tritt.Note in order for the setting change to take effect, the SQL Server instance must be restarted. Ein Neustart ist erforderlich, um eine Zuordnung ausreichender Hashseiten entsprechend der PMEM-Gesamtkapazität auf dem Server zu ermöglichen.A restart is needed to facilitate allocating sufficient hash pages, to account for total PMEM capacity on the server.

Im folgenden Beispiel wird der hybride Pufferpool für eine bestimmte Datenbank aktiviert.The following example enables hybrid buffer pool for a specific database.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;

Standardmäßig ist der hybride Pufferpool für die gesamte Datenbank aktiviert.By default, hybrid buffer pool is enabled at the database scope.

Deaktivieren des hybriden PufferpoolsDisable hybrid buffer pool

Im folgenden Beispiel wird der hybride Pufferpool auf Instanzebene deaktiviert.The following example disables hybrid buffer pool at the instance level:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;

Standardmäßig wird der hybride Pufferpool auf Instanzebene deaktiviert.By default, hybrid buffer pool is disabled at the instance level. Damit diese Änderung wirksam wird, muss die Instanz neu gestartet werden.In order for this change to take effect, the instance must be restarted. Dadurch wird sichergestellt, dass dem Pufferpool genügend Hashseiten zugewiesen sind, da die PMEM-Kapazität auf dem Server jetzt berücksichtigt werden muss.This ensures enough hash pages are allocated for the buffer pool, as PMEM capacity on the server now needs to be accounted for.

Im folgenden Beispiel wird der hybride Pufferpool für eine bestimmte Datenbank deaktiviert.The following example disables hybrid buffer pool for a specific database.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;

Standardmäßig ist der hybride Pufferpool für die gesamte Datenbank aktiviert.By default, hybrid buffer pool is enabled at the database scope.

Anzeigen der Konfiguration des hybriden PufferpoolsView hybrid buffer pool configuration

Im folgenden Beispiel wird der aktuelle Konfigurationsstatus des hybriden Pufferpools der Instanz zurückgegeben.The following example returns the current hybrid buffer pool configuration status of the instance.

SELECT * FROM
sys.server_memory_optimized_hybrid_buffer_pool_configuration;

Im folgenden Beispiel sind die Datenbanken und die Einstellung auf Datenbankebene für den hybriden Pufferpool (is_memory_optimized_enabled) aufgeführt.The following example lists the databases and the database level setting for hybrid buffer pool (is_memory_optimized_enabled).

SELECT name, is_memory_optimized_enabled FROM sys.databases;

Bewährte Methoden für den hybriden PufferpoolBest Practices for hybrid buffer pool

Verwenden Sie beim Formatieren Ihres PMEM-Geräts unter Windows die größte verfügbare Zuordnungseinheit für NTFS (2 MB in Windows Server 2019), und stellen Sie sicher, dass das Gerät für DAX (DirectAccess) formatiert wurde.When formatting your PMEM device on Windows, use the largest allocation unit size available for NTFS (2 MB in Windows Server 2019) and ensure the device has been formatted for DAX (Direct Access).

Verwenden Sie gesperrte Seiten im Arbeitsspeicher unter Windows.Use Locked Pages in Memory on Windows.

Dateigrößen müssen ein Vielfaches von 2 MB sein (Modulo 2 MB muss 0 (Null) sein).Files sizes should be a multiple of 2 MB (modulo 2 MB should equal zero).

Wenn die für den Server gültige Einstellung für den hybriden Pufferpool deaktiviert ist, wird das Feature von keiner Benutzerdatenbank verwendet.If the server scoped setting for hybrid buffer pool is disabled, the feature will not be used by any user database.

Wenn die für den Server gültige Einstellung für den hybriden Pufferpool aktiviert ist, können Sie mit der für die Datenbank gültigen Einstellung das Feature für einzelne Benutzerdatenbanken deaktivieren.If the server scoped setting for hybrid buffer pool is enabled, you can use the database scoped setting to disable the feature for individual user databases.