SQL會緩存大量的數據頁面,他還會緩存很多其他信息,包括存儲過程的執行計划 ,特定用戶的安全上下文等
如果這些信息沒有在數據庫中緩存,SQL都要重新計算一遍,花額外的時間,所以SQLSERVER對內存的需求是十分強烈的。
配置原則:
(1)如果服務器支持64位操作系統,沒有特殊理由的話,請安裝64位系統。這樣SQL能夠有效地使用 大於2GB的內存。如果一定要用32位系統,務必將SQLSERVER服務器屬性里面的“使用AWE分配內存”打開。但是不要用boot.ini文件里的/3GB這個開關,即不要在boot.ini文件里加上/3GB這個參數。
(2)盡量使服務器專門供數據庫使用,不要將其他服務(例如IIS,中間層應用服務等)安裝在同一台機器上。多個生產應用服務在同一台機器上運行,會大大增加維護成本
(3)建議設置SQLSERVER max server memory(最大服務器內存),以確保Windows有足夠的內存供系統本身使用。
情況歸納如下:
一台4GB機器,建議預留1GB,設置SQLSERVER max server memory為2.8GB
一台8GB機器,建議預留2GB,設置SQLSERVER max server memory為6GB
一台大於8GB的64位機器,建議預留3GB~4GB
如果一台服務器上還有其他應用使用內存,也要扣除他們的內存使用數
一般設置SQLSERVER min server memory(最小服務器內存)意義不大
sqlserver最大服務器內存設置(通過T-sql設置):
sp_configure 'show advanced options',1; go reconfigure go sp_configure 'max server memory',60000; go reconfigure go
sqlserver修改每次查詢最小內存:
EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE ; GO EXEC sp_configure 'min memory per query', 3500 ; GO RECONFIGURE; GO
相關解釋:
最小和最大Server內存
Min Server Memory (MB) 和 Max Server Memory (MB)控制所有SQL Server內存使用的許可大小。比起之前的版本,SQL Server 2012的Memory Manager可以更簡單地設置SQL Server內存需求的大小。SQL Server服務是以所需的最小量啟動的,並根據需要增長。一旦內存使用增長超過Min Server Memory設置,SQL Server將不會釋放任何低於該量的內存。Min Server Memory設置內存使用的下限,而Max Server Memory則設置上限。這兩個值可以使用sp_configure或通過Management Studio中的SQL Server屬性窗口的內存頁面進行設置。兩個設置中,配置緩沖池的最大值更重要,它會阻止SQL Server占用過多的內存。這在64位系統中尤其重要,因為缺少可用物理內存能夠導致Windows裁剪SQL Server的工作集。后面的“鎖定內存頁”有關於這個問題的完整描述。對於配置Max Server Memory,有一些不同的方法來計算合適的值,最直接的方法是看看SQL Server的最大使用量,及確定SQL Server之外內存需求的最大潛在用量。
查看SQL Server的最大使用量
設置SQL Server動態管理內存,然后使用性能監視器監視計數器MSSQL$<instance>:Memory Manager\Total ServerMemory (KB)。這個計數器測量SQL Server的總緩沖池使用量。如果SQL Server以外的其他需求需要比當前可用內存更多的物理內存時,Total Server Memory值會降低,然后使用任何可用內存再增加。如果您監視此計數器一段時間(包括忙時和淡時),然后你就可以將Max Server Memory設置為你觀察到的Total Server Memory (KB)的最低值,你不必擔心SQL Server在正常操作期間收縮它的使用量。
確定SQL Server之外內存需求的最大潛在用量
此選項是最流行的,因為其目的是計算出最壞的情況下,除SQL Server之外的內存需求。你應該考慮如下情況:
2GB用於Windows
xGB用於SQL Server工作線程。你可以查詢sys.dm_os_sys_info來獲取最大工作線程數,每個線程會使用0.5MB(在x86系統),2MB(在x64)
512MB,如果你用Linked servers、擴展存儲過程dll,或通過自動化程序(Automation procedures (sp_OA calls))創建的對象
1~3GB,用於其他可能再系統上運行的應用程序,如備份程序或反病毒軟件
例如,在一個有8個CPU內核、64GB RAM、運行SQL Server 2012、一個第三方備份工具和病毒檢測程序的服務器上,你將考慮如下情況:
2GB用於Windows
1GB用於工作線程(576 X 2MB四舍五入)
512MB用於Linked Server等
1GB用於備份程序和病毒檢測程序
共計4.5GB,你可以將Max Server Memory配置為59.5GB