Настройка постоянной памяти (PMEM) для SQL Server в Windows

В этой статье описывается настройка постоянной памяти (PMEM) для SQL Server 2016 (13.x) и более поздних версий в Windows.

Общие сведения

SQL Server 2019 (15.x) имеет несколько функций базы данных в памяти, которые зависят от постоянной памяти. В этом документе рассматриваются действия, необходимые для настройки постоянной памяти для SQL Server в Windows.

Примечание

Термин просвещение был введен для того, чтобы описать понятие работы с файловой системой, поддерживающей энергонезависимую память. Расширения прямого доступа (DAX) к файловой системе NTFS позволяют сопоставлять файлы в памяти из пространства ядра с пространством пользователя. Если файл является памятью, сопоставленной с пространством пользователя, приложение может выдавать инструкции по загрузке и хранению непосредственно в сопоставленном файле памяти, полностью минуя стек ввода-вывода ядра. Это считается "просвещенным" методом доступа к файлам. С Windows Server 2022 эта функция просвещения доступна на платформах Windows и Linux.

Настройка устройств

Создание пространств имен для устройств PMEM

В Windows используйте служебную ipmctl программу для настройки дисков PMEM (которые в Linux называются пространствами имен). Инструкции для Intel® Optane™ можно найти здесь. Сведения о поддерживаемом оборудовании PMEM в разных версиях Windows см. в статье Общие сведения о постоянной памяти и развертывании. Диски PMEM должны чередоваться между NVDIM-модулями PMEM и могут предоставлять различные типы доступа пользователя к областям памяти на устройстве. Дополнительные сведения о чередующихся наборах в Windows см. в статье Общие сведения о постоянной памяти и их развертывании.

Диски PMEM

Использование PowerShell для проверки дисков 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 и DAX

По умолчанию New-PmemDisk будет использовать нужный FSDax режим. Для атомарности задано значение по умолчанию , None а не BlockTranslationTable. С точки зрения поддержки для журнала транзакций необходимо включить BTT, чтобы имитировать необходимую семантику режима сектора. Хотя обычно рекомендуется использовать BTT с NTFS, BTT не рекомендуется использовать при использовании больших страниц, таких как требуется для DAX.

Get-PmemUnusedRegion | New-PmemDisk -Atomicity None

Форматирование томов 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

Выравнивание и смещение файлов

Проверка смещения секций

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

Проверьте выравнивание определенного файла с помощью fsutil. Размер файла должен быть по модулю 2 МБ.

fsutil dax queryFileAlignment A:\AdventureWorks2022_A.mdf

Замена PMEM

Повторная подготовка дисков PMEM

При замене модуля PMEM его необходимо повторно подготовить.

Примечание

Удаление диска PMEM приведет к потере данных на этом диске.

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

Очистка модулей PMEM

Чтобы окончательно удалить данные из модулей PMEM, используйте Initialize-PmemPhysicalDevice командлет PowerShell.

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

См. также раздел

Другие командлеты для управления PMEM см. в разделе PersistentMemory справочной документации по PowerShell.