min memory per query 指定查詢執行時保證獲得的最小記憶體量(KB),預設值 1,024 KB(1 MB),可設定範圍 512 KB ~ 2 GB。關鍵在於「per query」與「min」:每個查詢獨立申請,且為最低保障。
大量併發查詢同時申請大量記憶體保留,易導致記憶體爭用、嚴重阻塞,甚至 OOM。不建議調大。
單查詢涉及大量排序、群組、雜湊連接等記憶體密集操作。適度調大可減少 Tempdb 溢寫,顯著提升查詢效能。建議視負載調大。
公式:可用記憶體 / (總併發數 × 平均單查詢需求)
係數 > 1:記憶體充裕,維持預設或設為最小需求值即可。
係數 < 1:記憶體不足,需依業務優先級三策略抉擇:
設定為交易查詢單次需求值。但須確保:設定值 ≤ 可用記憶體 / (交易併發 + 分析併發),避免長跑分析查詢長期佔用導致交易查詢不穩定。
適度調大,讓分析查詢獲得更大記憶體授予。上限不超過 可用記憶體 / 分析併發數,否則交易查詢將永無法啟動。可配合查詢超時延長、佇列機制、查詢優先級(Resource Governor)緩解衝突。
交易查詢執行極短,即便暫時浪費記憶體,釋放也快。分析查詢等待代價遠小於獲得額外記憶體帶來的執行時間縮減。實務上常採取此策略並配合 Resource Governor 設定分析查詢高優先級。
Memory Grants Pending、Memory Grants Outstanding 等計數器