5. 跟蹤標記 (Trace Flag) 834, 845 對內存頁行為的影響
跟蹤標記:834
功能:
在64位的windows環境下,為SQL Server開啟這個跟蹤標記,那麽SQL Server 會使用大頁(Large pages)為內存緩沖區(buffer pool)分配內存,從而可以提高CPU轉換檢測緩沖區(TLB: Translation Lookaside Buffer)的效率得以提升性能;
大頁(Large Pages): 正常情況下windows內存是4KB的頁,而大頁的最小空間是2MB,也就是說分配的時候可能大於2MB;
轉換檢測緩沖區(TLB: Translation Lookaside Buffer):是一個內存管理單元,用於改進虛擬地址到物理地址轉換速度;
如何開啟?
跟蹤標記834只能在啟動SQL Server時開啟
1. 打開SQL Server Configuration Manger;
2. 右擊SQL Server實例選擇屬性(Properties);
3. 在啟動參數 (Startup Parameters) 裏添加-T834;
4. 保存並重啟SQL Server實例的服務以生效;
5. 開啟成功的話,在SQL Server errorlog裏可以看到類似字樣:Using large pages in the memory manager.
備註:
1. 大頁 (Large Pages) 分配只在SQL Server 64位+企業版的SQLOS有效;
2. 需要為SQL Server開啟了Lock Pages In Memory (LPIM);
3. 建議只在SQL Server的專用服務器上開啟,否則如果內存碎片太多或者內存不足無法分配大頁,可能會導致SQL Server無法啟動;另外在使用columnstore index的服務器上,也不建議開啟這個跟蹤標記;
跟蹤標記:845
功能:
Locked Pages In Memory(LPIM)是一個windows特性,用於控制Windows進程不使用虛擬內存;
在SQL Server 2012前,如果要對SQL Server進程開啟這一特性,根據版本不同,可能會需要用到跟蹤標記845,詳見下表:
從SQL Server 2012起,如何開啟LPIM?
1. 開始菜單 - 運行 - 輸入gpedit.msc - 回車,以打開組策略;
2. 計算機配置 - Windows 設置 - 安全設置 - 本地策略 - 用戶權利指派
3. 雙擊“鎖定內存中的頁”,在“本地安全策略設置”對話框中,單擊“添加”按鈕添加SQL Server服務賬號並確認;
4. 重啟SQL Server服務以使配置生效;
5. 成功開啟LPIM後,在SQL Server errorlog裏可以看到類似字樣:Using locked pages in the memory manager.;
備註:
1. 不難發現,在SQL Server 2012前,64位的標準版裏開啟LPIM會可能會用到跟蹤標記845,從SQL Server 2012之後就再也不需要了;
2. 如果同時開啟834跟蹤標記和LPIM,那麽errorlog只會顯示:Using large pages in the memory manager.,並不會顯示:Using locked pages in the memory manager.,因為開啟跟蹤標記834的前提是開啟了LPIM;
參考:
Trace Flag 834 and When to Use It
https://blogs.technet.microsoft.com/sql_server_isv/2010/11/30/temenos-t24-trace-flag-834-and-when-to-use-it/
Tuning options for SQL Server when running in high performance workloads
https://support.microsoft.com/en-us/help/920093/tuning-options-for-sql-server-when-running-in-high-performance-workloa
SQL Server and Large Pages Explained
https://blogs.msdn.microsoft.com/psssql/2009/06/05/sql-server-and-large-pages-explained/
Server Memory Server Configuration Options
https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options#lock-pages-in-memory-lpim
How to enable the "locked pages" feature in SQL Server 2012
https://support.microsoft.com/en-us/help/2659143/how-to-enable-the-locked-pages-feature-in-sql-server-2012
DBCC TRACEON - Trace Flags (Transact-SQL)
https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql
5. 跟蹤標記 (Trace Flag) 834, 845 對內存頁行為的影響