當 SQL Server 在 Windows NT 或 Windows 2000 上運行時,其預設記憶體管理行為並非獲取固定數量的記憶體,而是在不產生過多分頁 I/O 的前提下,盡可能佔用更多可用記憶體。資料庫引擎會動態平衡:保留足夠的可用記憶體供作業系統使用,同時將剩餘記憶體納入緩衝池以提升查詢效能。
SQL Server 執行個體啟動時通常只佔用 8 到 12 MB 記憶體完成初始化。初始化完成後,不會主動申請更多記憶體,直到有使用者連線並產生工作負載。隨著更多連線與查詢湧入,執行個體會持續獲取記憶體以支撐負載,直到達到內部計算的「記憶體分配目標」,且只有當可用記憶體低於目標下限時才會釋放記憶體。
為避免過度分頁,每個 SQL Server 執行個體會設定一個記憶體獲取目標,使系統可用實體記憶體維持在 4 MB 到 10 MB 之間。測試顯示,Windows NT/2000 在可用記憶體等於實體記憶體減 4 MB 時分頁最少。負載較重的執行個體傾向保留 4 MB 可用記憶體(目標下限),負載較輕則保留 10 MB(目標上限)。此機制確保緩衝池最大化同時不引發額外交換。
目標記憶體會隨工作負載動態變化。當使用者增加、查詢頻繁,執行個體傾向獲取更多記憶體,將可用記憶體壓至 4 MB 附近;負載減輕時,目標上調至 10 MB 並釋放記憶體。這與「緩衝區管理員」的「頁壽命」效能計數器密切相關:頁壽命短(緩衝區頁快速被替換)意味著 I/O 壓力大,引擎會降低目標至 4 MB 以擴大緩衝池;頁壽命長則可放寬至 10 MB。
當同機器上其他應用程式啟動並佔用記憶體,導致可用實體記憶體低於 SQL Server 目標時,SQL Server 會釋放記憶體使可用量回升至目標值;反之,其他應用結束釋放記憶體時,SQL Server 會迅速增加配置。SQL Server 能以每秒數 MB 的速度釋放/獲取記憶體,實現快速適應。
雖然動態管理通常足夠,但管理員可透過 min server memory 和 max server memory 設定上下限:
預設情況下 SQL Server 採用動態配置,此行為由其內建記憶體管理機制決定。