Configurare la memoria persistente per SQL Server in Windows

Questo articolo descrive come configurare la memoria persistente per SQL Server 2016 (13.x) e versioni successive in Windows.

Panoramica

SQL Server 2019 (15.x) include varie funzionalità nel database in memoria che sfruttano la memoria persistente. In questo documento vengono illustrati i passaggi necessari per configurare la memoria persistente per SQL Server in Windows.

Nota

Il termine consapevolezza è stato usato per spiegare il concetto relativo all'uso di un file system in grado di riconoscere la memoria persistente. Le estensioni di accesso diretto (DAX) del file system NTFS consente di eseguire il mapping dei file dal kernel allo spazio utente. Quando un file è mappato nella memoria dello spazio utente, l'applicazione può inviare istruzioni di caricamento/archiviazione direttamente al file mappato nella memoria, ignorando completamente lo stack di I/O del kernel. Si tratta di un metodo di accesso ai file “con risconoscimento”. A partire da Windows Server 2022, questa funzionalità di riconoscimento è disponibile nelle piattaforme Windows e Linux.

Configurare i dispositivi

Creare spazi dei nomi per i dispositivi con memoria persistente

In Windows, usare l'utilità ipmctl per configurare i dischi PMEM (detti “spazi dei nomi” in Linux). Le istruzioni specifiche di Intel® Optane™ sono disponibili qui. I dettagli sull'hardware PMEM supportato in diverse versioni di Windows sono disponibili in Informazioni e distribuzione della memoria persistente. I dischi PMEM sono interfoliati tra i moduli NVDIMM di memoria persistente e possono offrire diversi tipi di accesso dello spazio utente alle aree di memoria sul dispositivo. Per altre informazioni sui set interleaved in Windows, vedere Informazioni e distribuzione della memoria persistente.

Dischi PMEM

Usare PowerShell per esaminare i dischi PMEM

#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 e DAX

Per impostazione predefinita, New-PmemDisk userà la modalità FSDax desiderata. Atomicità è impostata sul valore predefinito di None anziché su BlockTranslationTable. Dal punto di vista del supporto, BTT deve essere abilitato per il log delle transazioni, per simulare la semantica della modalità settore richiesta. Anche se l'uso di BTT con NTFS è generalmente consigliato, BTT non è consigliato quando si usano pagine di grandi dimensioni, ad esempio per DAX.

Get-PmemUnusedRegion | New-PmemDisk -Atomicity None

Formattazione dei volumi NTFS


#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

Allineamento e offset dei file

Controllare gli offset della partizione

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

Controllare l'allineamento del file di un file specifico usando fsutil. Le dimensioni del file devono essere di un modulo di 2 MB.

fsutil dax queryFileAlignment A:\AdventureWorks2022_A.mdf

Sostituzione di PMEM

Eseguire di nuovo il provisioning dei dischi PMEM

Ogni volta che viene sostituito un modulo PMEM, è necessario eseguirne nuovamente il provisioning.

Nota

La rimozione di un disco PMEM comporterà la perdita di dati su tale disco.

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

Cancellare i moduli PMEM

Per cancellare definitivamente i dati dai moduli PMEM, usare il cmdlet PowerShell Initialize-PmemPhysicalDevice.

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

Vedi anche

Per altri cmdlet per la modifica di PMEM, vedere PersistentMemory nella documentazione di riferimento di PowerShell.