[SQL Server][安裝]確認鎖定記憶體分頁(Lock Pages in Memory, LPIM)是否生效了

SQL Server安裝後,在本機安全性原則中,除了執行磁碟區維護工作權限外,另一個最佳化的設定就是鎖定記憶體分頁了,他可以防止Windows系統將記憶體資料傳送到磁碟上的虛擬記憶體,這邊可以參考德瑞庫克老師或是Rico老師的文章都有更詳盡的說明,但我們想知道怎麼確認安裝廠商已經有正確設定LPIM了?除了監控Paging File查看虛擬記憶體使用,來找找LPIM在SQL的出生證明。

晚上看國術館滑手機時很快找到一篇教學Lock Pages in Memory的KB,哈哈! 裡面正好有說明,快來筆記測試。


透過DMV(sys.dm_os_memory_nodes)

locked_page_allocations_kb 會回傳不等於0的值

SELECT
	osn.node_id
	,osn.memory_node_id
	,osn.node_state_desc
	,omn.locked_page_allocations_kb
FROM sys.dm_os_memory_nodes omn
INNER JOIN sys.dm_os_nodes osn
	ON (omn.memory_node_id = osn.memory_node_id)
WHERE osn.node_state_desc <> 'ONLINE DAC'

執行結果:

 


SQL Server Error Log

打開SQL Server紀錄檔搜尋locked pages

 


執行DBCC MEMORYSTATUS 

在"Memory Manager" 區塊中可以找到Locked Pages Allocated > 0 

 


啟用LPIM

Windows鍵 + R  輸入secpol.msc

本機安全性原則 > 本機原則 > 使用者權限指派 > 鎖定記憶體中的分頁

  1. 點兩下鎖定記憶體中的分頁

  2. 按一下 [新增使用者或群組]。

  3. 在 [選取使用者、服務帳戶或群組] 對話方塊中,加入具有執行 sqlservr.exe 權限的帳戶。

  4. 登出後再重新登入以使這項變更生效。

此安全性設定決定哪些使用者能使用處理程序來保留實體記憶體中的資料,阻止系統將資料分頁到磁碟上的虛擬記憶體。履行此特殊權限會降低可用的隨機存取記憶體 (RAM) 數量,而對系統效能造成顯著影響。

預設值: 無。


小結

  • 也碰過SP直接設定不給用虛擬記憶體的。

義大利,五漁村,被鎖在地中海了

 


參考

德瑞克老師 效能調教:鎖定記憶體分頁(Lock Pages in Memory, LPIM)

Docs 啟用鎖定記憶體分頁選項 (Windows)

KB 2659143 How to enable the "locked pages" feature in SQL Server 2012

Rico 老師[SQL SERVER]安裝SQL Server重要初始設定