SQL服務器內(nèi)存有兩種基本管理方法:動態(tài)分配和靜態(tài)分配
控制程序可使用的內(nèi)存數(shù)量。動態(tài)分配允許管理員聲明一塊內(nèi)存的大小;考慮到它的實際使用,SQL服務器可以分配給其需要占用的內(nèi)存的最大值,并且(理論上)在沒有使用內(nèi)存的情況下將其釋放。靜態(tài)分配則是創(chuàng)建一塊固定的內(nèi)存空間,提供給SQL Server使用——不再進行分配。
在默認情況下,SQL Server被設置成動態(tài)分配,分配給其正在運行的計算機內(nèi)所有可用的物理內(nèi)存。許多管理員注意到SQL Server內(nèi)存隨時間的流逝被逐漸消耗殆盡時,其原因很可能是故障或是內(nèi)存漏洞,但這個程序正是被設計成這樣的。SQL Server就是要在任何可能的情況下在電腦中運行,并因此為達到其最佳性能而使用所有可用的內(nèi)存。如果SQL Server在獨立的機器中運行,那么就讓它分配和釋放其需要的內(nèi)存吧。
在一個小型商業(yè)服務器機器中,SQL可能與其他程序,如IIS,同時運行,管理員或許嘗試著進行設置,使SQL Server運行在一塊固定大小的內(nèi)存,目的是控制其不會占用用于共享的內(nèi)存。但這并不一定能如愿以償。一方面,將內(nèi)存的最高限度設置得太低,并且沒有分配給SQL服務器足夠的可用內(nèi)存來用作類似事務日志或查詢執(zhí)行的緩存,所有這些都很難辦到。使SQL服務器得到執(zhí)行操作所需內(nèi)存的惟一方法就是換出其他的頁面,這是個緩慢的過程。
有許多方法可以計算出最好的內(nèi)存分配。如果你有可預知的用戶負載,依照用戶所需的最大數(shù)目分配給他們。微軟推薦至少用4 MB用作動態(tài)的最大空間,這已經(jīng)成為一個可能的規(guī)則。如果你的用戶負載變化范圍很大——如以下情況,當你通過IIS 的前端連接到公共的因特網(wǎng)來支持你的數(shù)據(jù)庫服務的時候——實時的統(tǒng)計數(shù)據(jù)將會比僅憑猜測所作的工作幫助更大。在高峰期,把SQL Server的高速緩存命中率和每秒缺頁率等性能數(shù)字搜集起來。如果這些數(shù)據(jù)表明SQL Server正在做大量的交換,那么增加最大內(nèi)存空間直到交換逐漸減少。每秒一次或更多次的交換是有壞處的。
另一種選擇是使“為SQL Server預留物理內(nèi)存”的選項可用,這可以防止SQL Server把已經(jīng)分配給它的內(nèi)存換出,即使當其他應用程序能夠使用它時。這可以叫做是一把雙刃劍:它既可以相當大程度的提高性能,也可能帶來更大的性能損害。在有許多RAM 可以共享的(1 GB 或更多)的系統(tǒng)中,這是值得一試的,但是當有其他關鍵的進程可能突然需要大量的內(nèi)存時,這種辦法是不應該使用的。(并且如果需要的話,SQL Server可能會被迫放棄一些它自己的內(nèi)存)。如果SQL Server是在獨立的機器上運行,用這種辦法最佳化性能則是值得的。
新聞熱點
疑難解答
圖片精選