為 Windows 上的 SQL Server 設定持續性記憶體 (PMEM)

本文說明如何為 Windows 上的 SQL Server 2016 (13.x) 和更新版本設定持續性記憶體 (PMEM)。

概觀

SQL Server 2019 (15.x) 有數個依賴持續性記憶體的記憶體內部資料庫功能。 本文件說明為 Windows 上的 SQL Server 設定持續性記憶體所需的步驟。

注意

過去引進「啟用」 一詞是為了傳達使用持續性記憶體感知檔案系統的概念。 NTFS 檔案系統的直接存取 (DAX) 延伸模組,可讓您將檔案的記憶體從核心空間對應至使用者空間。 當檔案的記憶體對應至使用者空間時,應用程式就可以直接對記憶體對應檔案發出載入/儲存指示,完全略過核心 I/O 堆疊。 這被視為「啟發式」檔案存取方法。 自 Windows Server 2022 起,Windows 和 Linux 平台上都會提供這項「啟發式」功能。

設定裝置

建立 PMEM 裝置的命名空間

在 Windows 中,使用 ipmctl 公用程式來設定 PMEM 磁碟 (在 Linux 中稱為命名空間)。 您可以在這裡找到 Intel® Optane™ 特定指示。 如需不同 Windows 版本上支援的 PMEM 硬體詳細資料,請參閱了解和部署持續性記憶體。 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,才能模擬必要的磁區模式語意。 雖然通常會建議搭配 NTFS 使用 BTT,但在使用大型頁面時 (例如視 DAX 需要),則不建議使用 BTT。

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 MB 的模數。

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 Cmdlet。

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

另請參閱

如需操作 PMEM 的其他 Cmdlet,請參閱 PowerShell 參考文件中的 PersistentMemory