常見問題:MSSQL 記憶體佔用極高且持續增長,或已設定最大記憶體卻未生效。這究竟是怎麼回事?
若記憶體充足,SQL Server 會將用過的資料與預測會用到的資料全部載入記憶體,直到記憶體不足時才淘汰命中率低的資料。這就是為什麼 STATISTICS IO 中常看到 physical reads = 0 的原因。
建議:常用於關聯與排序的欄位應建立索引。
佔用相對較小,通常不是瓶頸。
資料快取越多越好,甚至可手動將熱門資料 Pin 在快取 中。不建議限制 SQL Server 記憶體上限。
雖然 SQL Server 在需要時會釋放記憶體,但執行緒切換、I/O 等待會造成效能下降。必須設定最大記憶體上限:
sp_configure 設定查詢記憶體開銷越低越好。避免使用中繼表與游標;在頻繁 JOIN 與排序的欄位建立索引。