本文說明如何在 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,以模擬期望的扇區模式語義。 雖然通常建議使用 BTT 搭配NTFS,但在需要使用大型頁的情況下,例如 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。