Поделиться через


Настройка постоянной памяти (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™ DC для гостей KVM/QEMU". Сведения о поддерживаемом оборудовании PMEM в разных версиях Windows находятся в разделе понятие и использованиепостоянной памяти. Диски PMEM должны быть размещены чередующимся образом между модулями PMEM NVDIMM и могут предоставлять различные типы пользовательского доступа к областям памяти на устройстве. Для получения дополнительной информации о чередуемых наборах в 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 обычно рекомендуется, не рекомендуется это делать, когда используются большие страницы, например, как требуется для DAX.

Get-PmemUnusedRegion | New-PmemDisk -Atomicity None

Форматирование томов NTFS

#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

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

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

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

Проверьте выравнивание конкретного файла с помощью 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, используйте командлет PowerShell Initialize-PmemPhysicalDevice.

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