SQL Serverのメモリを解放する方法


9

ローカルコンピューターにSQL Serverサンドボックスがインストールされています。SQL Serverインスタンスが使用できるメモリを1000 MBに設定しました。集中的な操作を実行すると、メモリ使用量が最大1000 MB増加します。操作が終了しても、SQL Serverはまだメモリを保持しています。このメモリ予約を解放する方法は?


2
あなたmin server memorymax server memory 設定は何ですか?SQL Serverが指定した最小値を予約すると、設定を変更するかインスタンスをバウンスしない限り、SQL Serverはそれを解放しません。Jamesが述べたように、それが指定した最小値を超えて予約している場合、理論的にはそれが不要で、マシンにメモリのプレッシャーがあるときにそれを解放するはずです。
Nick Chammas、2011年

@Nick:最小サーバーメモリ:0(MB); 最大サーバーメモリ:600(MB)。
jrara 2011年

回答:


13

サービスを停止/開始します。他にメモリを解放してOSに戻しません。

明らかに、運用サーバーで実行したいことではありませんが、ローカルサンドボックスには完全に妥当です。私のラップトップには3つの異なるインスタンスがあり、これが唯一の実行可能な方法です。

次の@Nickのコメントを編集します。

Jamesが述べたように、それが指定した最小値を超えて予約している場合、理論的にはそれが不要で、マシンにメモリのプレッシャーがあるときにそれを解放するはずです。

「必要ない」のあなたの定義は何ですか?バッファープールがいっぱいになると、他のページが取り込まれて不快になるまで、ページはドロップされません。@ jraraの場合のように、すぐにメモリを戻したい場合は、停止する必要があります。 /開始。


2
Microsoftによれば、「Windows Server 2003では、SQL Serverはメモリ通知API QueryMemoryResourceNotificationを使用して、いつバッファプールがメモリを割り当て、メモリを解放するかを決定します。」したがって、メモリをさらに必要とする可能性のある他のアプリを使い果たしてしまうのではないかと心配している場合、SQL Serverは理論的には、Windowsが指示したときに不要なメモリを解放します。インスタンスを再起動してリリースを強制する必要がある唯一の理由は、このメカニズムが設計どおりに機能していないか、最小/最大メモリ設定が正しくない場合です。
Nick Chammas、2011年

このmsdn.microsoft.com/en-us/library/ms178145.aspxを明確にするもう1つの便利なmsdn記事。SQL Serverが最小サーバーメモリ設定に達している限り、OSからのメモリ不足通知に応じてメモリを解放します。私の経験では、これが起こるためにはかなり極端でなければなりません。
georgeb

正確には@georgeb_dbaですが、すぐには諦めません。エルゴ、停止/開始し、すぐにラップトップの限られたメモリを取り戻します。
Mark Storey-Smith

4
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分ごとに記録されます。


1
これにより、SQLがOSレベルで予約したメモリの量が実際に減らないことを確認してください
Greg

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.