ローカルコンピューターにSQL Serverサンドボックスがインストールされています。SQL Serverインスタンスが使用できるメモリを1000 MBに設定しました。集中的な操作を実行すると、メモリ使用量が最大1000 MB増加します。操作が終了しても、SQL Serverはまだメモリを保持しています。このメモリ予約を解放する方法は?
ローカルコンピューターにSQL Serverサンドボックスがインストールされています。SQL Serverインスタンスが使用できるメモリを1000 MBに設定しました。集中的な操作を実行すると、メモリ使用量が最大1000 MB増加します。操作が終了しても、SQL Serverはまだメモリを保持しています。このメモリ予約を解放する方法は?
回答:
サービスを停止/開始します。他にメモリを解放してOSに戻しません。
明らかに、運用サーバーで実行したいことではありませんが、ローカルサンドボックスには完全に妥当です。私のラップトップには3つの異なるインスタンスがあり、これが唯一の実行可能な方法です。
次の@Nickのコメントを編集します。
Jamesが述べたように、それが指定した最小値を超えて予約している場合、理論的にはそれが不要で、マシンにメモリのプレッシャーがあるときにそれを解放するはずです。
「必要ない」のあなたの定義は何ですか?バッファープールがいっぱいになると、他のページが取り込まれて不快になるまで、ページはドロップされません。@ jraraの場合のように、すぐにメモリを戻したい場合は、停止する必要があります。 /開始。
QueryMemoryResourceNotification
を使用して、いつバッファプールがメモリを割り当て、メモリを解放するかを決定します。」したがって、メモリをさらに必要とする可能性のある他のアプリを使い果たしてしまうのではないかと心配している場合、SQL Serverは理論的には、Windowsが指示したときに不要なメモリを解放します。インスタンスを再起動してリリースを強制する必要がある唯一の理由は、このメカニズムが設計どおりに機能していないか、最小/最大メモリ設定が正しくない場合です。
DBCC FREESYSTEMCACHE ('ALL')
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
プールを解放します。
https://msdn.microsoft.com/en-us/library/ms178529.aspx
備考
DBCC FREESYSTEMCACHEを実行すると、SQL Serverのインスタンスのプランキャッシュがクリアされます。プランキャッシュをクリアすると、後続のすべての実行プランが再コンパイルされ、クエリのパフォーマンスが一時的に突然低下する可能性があります。プランキャッシュ内のクリアされたキャッシュストアごとに、SQL Serverエラーログに次の情報メッセージが含まれます。「SQL Serverは、 ' 「DBCC FREEPROCCACHE」または「DBCC FREESYSTEMCACHE」操作。」このメッセージは、その時間間隔内にキャッシュがフラッシュされている限り、5分ごとに記録されます。
min server memory
とmax server memory
設定は何ですか?SQL Serverが指定した最小値を予約すると、設定を変更するかインスタンスをバウンスしない限り、SQL Serverはそれを解放しません。Jamesが述べたように、それが指定した最小値を超えて予約している場合、理論的にはそれが不要で、マシンにメモリのプレッシャーがあるときにそれを解放するはずです。