改善SQL Server記憶體管理(轉)
改善SQL Server記憶體管理(轉)[@more@]最近,為了能在資料庫伺服器中執行其他應用程式,在保持資料庫作業系統版本不變的前提下對資料庫伺服器進行了軟、硬體上的升級。在軟體上,將作業系統從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 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能更好地對記憶體進行合理安排。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-960717/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫疑難講解:改善SQL Server記憶體管理資料庫SQLServer記憶體
- 淺談SQL Server 對於記憶體的管理SQLServer記憶體
- SQL Server 2000記憶體管理內幕SQLServer記憶體
- SQL SERVER 記憶體爆滿SQLServer記憶體
- SQL Server 2012 記憶體管理 (memory management) 改進SQLServer記憶體
- 合理配置SQL Server的最大記憶體SQLServer記憶體
- 為SQL Server啟用AWE記憶體SQLServer記憶體
- JAVA記憶體管理 [轉]Java記憶體
- SQL SERVER的記憶體會不斷增加,問題分析(轉)SQLServer記憶體
- Sql Server實體記憶體及虛擬記憶體設定的總結SQLServer記憶體
- 記憶體管理 記憶體管理概述記憶體
- 記憶體管理之五 (轉)記憶體
- 記憶體管理之一 (轉)記憶體
- 記憶體管理原始碼 (轉)記憶體原始碼
- Windows CE記憶體管理 (轉)Windows記憶體
- SQL Server為什麼這麼耗記憶體SQLServer記憶體
- SQL Server 記憶體資料庫原理解析SQLServer記憶體資料庫
- SQL Server表駐留記憶體和檢測SQLServer記憶體
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- 轉載——C++記憶體管理C++記憶體
- SQL Server 記憶體洩露(memory leak)——遊標導致的記憶體問題SQLServer記憶體洩露
- 【記憶體管理】記憶體佈局記憶體
- SQL Server 在AlwaysOn上使用記憶體表"踩坑"SQLServer記憶體
- SQL Server 2008記憶體效能監控SQLServer記憶體
- 關於SQL Server的記憶體佔用問題SQLServer記憶體
- 解決 SQL Server 耗盡記憶體的情況SQLServer記憶體
- 如何配置 SQL Server 使用 2 GB 以上的實體記憶體SQLServer記憶體
- 記憶體管理記憶體
- Innodb記憶體管理解析[轉載]記憶體
- FreeBSD VM核心記憶體管理(轉)記憶體
- 段頁式記憶體管理(轉載)記憶體
- 記憶體管理兩部曲之實體記憶體管理記憶體
- Go:記憶體管理與記憶體清理Go記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- Aerospike的bin記憶體管理--即列記憶體管理ROS記憶體
- SQL Server 記憶體洩露”(memory leak)的案例—遊標導致的記憶體問題SQLServer記憶體洩露
- SQL Server資料庫記憶體增加的問題分析SQLServer資料庫記憶體