Настройка постоянной памяти (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.