Konfigurieren von persistentem Speicher (PMEM) für SQL Server unter Windows

In diesem Artikel wird beschrieben, wie der persistente Speicher (persistent memory, PMEM) für SQL Server 2016 (13.x) und höher unter Windows konfiguriert wird.

Übersicht

SQL Server 2019 (15.x) verfügt über eine Reihe von In-Memory-Database-Funktionen, die auf persistentem Arbeitsspeicher basieren. Hier fahren Sie, wie Sie den persistenten Speicher für SQL Server unter Windows konfigurieren.

Hinweis

Der Begriff Aufklärung wurde eingeführt, um das Konzept eines Dateisystems auszudrücken, das persistenten Speicher unterstützt. Direktzugriffserweiterungen (Direct Access, DAX) für das NTFS-Dateisystem bieten die Möglichkeit, Dateien vom Kernelraum zum Benutzerbereich zuzuordnen. Wenn eine Datei dem Benutzerspeicher zugeordnet ist, kann die Anwendung Lade-/Speicheranweisungen direkt an die zugeordnete Speicherdatei ausgeben und den Kernel-I/O-Stapel vollständig umgehen. Dies gilt als „aufgeklärte“ Dateizugriffsmethode. Ab Windows Server 2022 ist diese Aufklärungsfunktion sowohl auf Windows- als auch auf Linux-Plattformen verfügbar.

Konfigurieren der Geräte

Erstellen von Namespaces für PMEM-Geräte

Verwenden Sie in Windows das Dienstprogramm ipmctl, um die PMEM-Datenträger (als Namespaces in Linux bezeichnet) zu konfigurieren. Sie finden Intel® Optane™-spezifische Anweisungen hier. Details zur unterstützten PMEM-Hardware in verschiedenen Windows-Versionen finden Sie unter Grundlegendes und Bereitstellen des PMEM. PMEM-Datenträger sollten PMEM-NVDIMM-übergreifend verschachtelt werden und können unterschiedliche Typen von Benutzerbereichszugriffen auf Speicherbereiche auf dem Gerät bereitstellen. Weitere Informationen zu Interleaved Sets in Windows finden Sie unter Verstehen und Bereitstellen von persistentem Arbeitsspeicher.

PMEM-Datenträger

Verwenden von PowerShell zum Untersuchen von PMEM-Datenträgern

#Get information about all physical disks
Get-PhysicalDisk

#Review logical configuration of PMEM disks
Get-PmemDisk

#Get information about PMEM devices
Get-PmemPhysicalDevice

#Get information about unused PMEM regions
Get-PmemUnusedRegion

BTT und DAX

Standardmäßig verwendet New-PmemDisk den gewünschten Modus FSDax. Die Unteilbarkeit wird auf die Standardeinstellung None anstelle von BlockTranslationTable festgelegt. Aus Unterstützungsperspektive muss BTT für das Transaktionsprotokoll aktiviert sein, um die erforderliche Sektormodussemantik nachzuahmen. Obwohl die Verwendung von BTT mit NTFS im Allgemeinen empfohlen wird, wird BTT nicht empfohlen, wenn große Seiten verwendet werden, z. B. erforderlich für DAX.

Get-PmemUnusedRegion | New-PmemDisk -Atomicity None

Formatieren der NTFS-Volumes


#Initialize PMEM Disk(s)
Get-PmemDisk | Initialize-Disk -PartitionStyle GPT

#Create New Partition(s) and Format the Volume(s) with DAX Mode
Get-PmemDisk[0] | `
New-Partition `
    -UseMaximumSize `
    -AssignDriveLetter `
    -Offset 2097152 `
    -Alignment 2097152 | `
Format-Volume `
    -FileSystem NTFS `
    -IsDAX:$True `
    -AllocationUnitSize 2097152

Dateiausrichtung und Offset

Überprüfen der Partitionsoffsets

Get-Partition | Select-Object DiskNumber, DriveLetter, IsDAX, Offset, Size, PartitionNumber | fl

Überprüfen Sie die Dateiausrichtung einer bestimmten Datei mithilfe von fsutil. Unsere Dateigröße muss ein Modulo von 2 MB sein.

fsutil dax queryFileAlignment A:\AdventureWorks2022_A.mdf

Ersetzen von PMEM

Erneute Bereitstellung von PMEM-Datenträgern

Wenn ein PMEM-Modul ersetzt wird, muss es erneut bereitgestellt werden.

Hinweis

Das Entfernen eines PMEM-Datenträgers führt zum Verlust von Daten auf diesem Datenträger.

# Remove all PMEM disks
Get-PmemDisk | Remove-PmemDisk -Confirm:$false

Löschen von PMEM-Modulen

Um Daten aus PMEM-Modulen dauerhaft zu löschen, verwenden Sie das PowerShell-Cmdlet Initialize-PmemPhysicalDevice.

# Reinitialize all PMEM disks
Get-PmemPhysicalDevice | Initialize-PmemPhysicalDevice -Confirm:$false

Siehe auch

Weitere Cmdlets zum Bearbeiten von PMEM finden Sie in der PowerShell-Referenzdokumentation unter PersistentMemory.