Teilen über


Konfigurieren des beständigen Arbeitsspeichers (PMEM) für SQL Server unter Windows

In diesem Artikel wird beschrieben, wie Sie den persistenten Speicher (PMEM) für SQL Server 2016 (13.x) und höher unter Windows konfigurieren.

Überblick

SQL Server 2019 (15.x) verfügt über mehrere In-Memory-Datenbankfeatures, die auf beständigem Arbeitsspeicher basieren. In diesem Dokument werden die Schritte behandelt, die zum Konfigurieren des beständigen Speichers für SQL Server unter Windows erforderlich sind.

Hinweis

Der Begriff "Erleuchtung " wurde eingeführt, um das Konzept der Arbeit mit einem beständigen Speicherfähigen Dateisystem zu vermitteln. Dax-Erweiterungen (Direct Access) für das NTFS-Dateisystem bieten die Möglichkeit, Dateien vom Kernelspeicher zum Benutzerbereich zuzuordnen. Wenn eine Datei dem Benutzerspeicher zugeordnet ist, kann die Anwendung Lade-/Speicheranweisungen direkt an die zugeordnete Speicherdatei ausgeben und den Kernel-E/A-Stapel vollständig umgehen. Dies gilt als "optimierte" 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 ipmctl Hilfsprogramm zum Konfigurieren der PMEM-Datenträger (als Namespaces in Linux bezeichnet). Weitere Informationen finden Sie unter Anleitung zur Bereitstellung von Intel® Optane™ DC Persistent Memory für KVM/QEMU-Gäste. Details zur unterstützten PMEM-Hardware in verschiedenen Windows-Versionen sind unter "Grundlegendes" und Bereitstellen des beständigen Arbeitsspeichers. PMEM-Datenträger sollten über PMEM NVDIMMs hinweg interleaviert werden und können verschiedene Arten von Benutzerspeicherzugriff auf Speicherbereiche auf dem Gerät bereitstellen. Weitere Informationen zu interleavierten Sätzen in Windows finden Sie unter Grundlegendes und Bereitstellen des beständigen Arbeitsspeichers.

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 New-PmemDisk wird der gewünschte FSDax Modus verwendet. Die Atomität wird auf die Standardeinstellung None anstelle von BlockTranslationTable. 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 disks
Get-PmemDisk | Initialize-Disk -PartitionStyle GPT

#Create new partitions and format the volumes with DAX Mode
$partition = @{ UseMaximumSize = $true; AssignDriveLetter = $true; Offset = 2097152; Alignment = 2097152 }
$volume = @{ FileSystem = 'NTFS'; IsDAX = $true; AllocationUnitSize = 2097152 }
Get-PmemDisk[0] | New-Partition @partition | Format-Volume @volume

Dateiausrichtung und -offset

Überprüfen von Partitionsversatzen

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

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

fsutil dax queryFileAlignment A:\AdventureWorks2022_A.mdf

PMEM ersetzen

Neu bereitstellen von PMEM-Datenträgern

Jedes Mal, wenn ein PMEM-Modul ersetzt wird, muss es neu 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

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

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