32 位的操作系統只能用 4G 的內存(不確定這句話是否正確),因爲 2 的 32 次方是 4G 。默認的情況下,操作系統給自己留了 2G ,剩下的 2G 給應用程序。所以,每個應用程序所能使用的內存,最大不超過 2G 。據說可以改 WINDOWS 的 BOOT.INI ,強制操作系統只使用 1G ,即使這樣,應用程序也至多是 3G 。
SQL SERVER 就是這麼個倒黴的應用程序。
就拿我們服務器來講, OS : windows 2003; 內存: 8G; SQL:2008 。結果內存只用了不到 2G ,其中 SQL 是 1.7 G ,並且這個值基本沒有什麼變化。
太浪費了。
十月革命一聲炮響,微軟送來了 AWE 。這個東西可以讓 32 位操作系統下的應用程序使用更多的內存。 SQL 支持 AWE 。
步驟:
1、 進入 SQL SERVER Management Studio
2、 右擊數據庫實例,選內存
3、 勾上“使用 AWE 分配內存”,填上合適的最小和最大內存(具體是什麼標準不清楚,我是給操作系統預留了 2G; 有的內存緊張的服務器只留 1G, 甚至只有 500M ,也沒發現什麼問題)
4、 重啓和芯數據庫實例。
之後用任務管理器查看,內存消耗越來越多,直至比設定值大一點點。很奇怪,這時看 SQL 消耗的內存,只有幾十 M ,不知道這個數值怎麼來的。估計是分配的內存之外消耗的吧?
在性能監視器(管理工具 - 性能)上看到,磁盤隊列大大減少了,實際應用,網站快了許多。
問題:
1、通常 Windows Server 服務器默認的設置不支持使用 2G 以上的內存,即使硬件的內存有超過2G,但是實際使用的時候也不會用到2G
2、多核CPU處理單個程序時,很多時候只是其中一個核CPU有在使用,其他都沒有發揮作用
爲了充分使用服務器內存和買賣IC網CPU的效率,需要做設置:
第一步:修改 windwos 啓動配置文件: c:\boot.ini
增加如下紅色文字部分設置
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" execute=optin /fastdetect /PAE /AWE
第二步:SQL Server 2005 管理器(SQL Server Management Studio Express),選擇服務器鼠標右鍵屬性,選擇“內存”頁,勾選“使用AWE分配內存”
第三步:我的電腦,鼠標右鍵:系統屬性——高級——設置——高級
處理器計劃:勾選“程序”
內存使用:勾選“程序”
第四步:重啓服務器