-
1 # 熊貓宿舍
-
2 # 吉吉籍籍
在軟體上,將作業系統從Windows 2000升級到Windows Server 2003;在硬體上,將伺服器中的記憶體由原來的512MB增加到1GB(1024MB)。 在升級後的開始幾個星期之內,伺服器在使用中表現良好。但是不久後就發現,在伺服器上同時執行的其他應用程式卻出現了異常,不時地報出記憶體分配不足的警告。
經過幾次跟蹤後發現,原來是SQL Server吞去了大部分記憶體所致。被SQL Server佔用的記憶體由升級前的不到400MB一下子增加到現在的900MB,並且有不斷增長的趨勢。 透過查詢原因才知道這是SQL Server 緩衝池的預期行為。
預設情況下,在啟動 SQL Server之後,SQL Server會根據作業系統報告的物理記憶體數來動態增大或縮小高速緩衝儲存器的容量。只要可用物理記憶體大小保持在4MB到10MB之間,SQL Server 緩衝池就會繼續增大(保留可用物理記憶體在4MB到10MB之間是為了避免作業系統因為缺少記憶體而頻繁地換頁)。
如果物理可用記憶體變得較少的時候,則SQL Server會將一些記憶體釋放給作業系統。 為了使執行在伺服器上的應用程式都能達到比較滿意的效果,同時也為了能給其他應用程式分配足夠的記憶體,需要採取措施限制SQL Server 的記憶體使用量。我們可以透過設定SQL Server 資料庫引擎使用的記憶體的上下限來達到此目的。
其具體步驟是: 1。開啟企業管理器,展開伺服器組。 2。單擊該伺服器,點選滑鼠右鍵,單擊屬性選單。 3。在彈出的對話方塊中單擊記憶體選項卡。 記憶體設定方法有兩種: 1。設定min server memory和max server memory 在一個範圍段內。
比如,我們將它設定成最小0MB,最大255MB。這種方法在為一臺伺服器中執行多個應用程式分配記憶體時非常有用。 2。設定 min server memory 和 max server memory 為同一數值。 比如,可以將它最大和最小值都設定成255MB。
這樣的設定方法與視窗中的另一個選項“使用固定的記憶體大小” 相一致。 雖然記憶體最小值和最大值設定是高階選項,但在設定完畢之後,最好還是先將SQL Server服務停止後再重新執行,以便SQL Server能更好地對記憶體進行合理安排。
回覆列表
如果能在例項級別為同一SQL伺服器上的不同例項限制其能夠使用的最大和最小記憶體,就能降低這種情況對其他應用系統的影響。具體的操作如下:(一)例項的最大和最小記憶體設定右擊資料庫,選擇屬性,如圖。為例項設定合適的最大和最小記憶體,如圖。(二)為作業系統預留足夠的記憶體假如一臺8GB的伺服器,我們可以限制資料庫使用的記憶體上限不超過6GB,剩下的2GB留給作業系統使用。(三)配置lock pages in memory檢視SQL程序的啟動賬戶,如圖。在組策略裡設定啟動SQL Server的賬戶擁有鎖定記憶體頁的許可權。如圖。在下圖的新增使用者或組介面,新增SQL server的服務啟動賬戶,如圖。