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