トップ回答者
SQLServer2008R2Standardのメモリ使用量(Sqlservr.exe)が減少しない件

質問
回答
-
2008でも2012でも同様です。
- 回答の候補に設定 nagino - 引退エンジニア 2015年1月15日 10:06
- 回答としてマーク tamaitomoki 2015年1月16日 7:20
-
SQL Server では、基本的には以下のような動作となります。
- SQL Server のプロセスが確保したメモリは基本的に開放しない
# 「ページ内のメモリのロック」の権限が付与されていない場合で、他のプロセスからメモリの取得要求があった場合は、ワーキングセットのトリミングという形で、メモリをページアウトし開放することもあります。 - データのキャッシュやクエリのキャッシュをクリアした場合は、確保したメモリの中で、Free List 化することで、空き領域とする。そのため、確保したメモリのサイズについては減らない
- SQL Server のプロセスが 10GB のメモリを確保し、8GB をデータ / 2GB をクエリのキャッシュで使用していた場合に、DBCC DROPCLEANBUFFERS/DBCC FREEPROCCACHE でキャッシュをクリアした場合は、
プロセスは 10GB のメモリを確保し、プロセス内で空き領域のメモリとして 10GB を確保した状態となる。
そのため、SQL Server でメモリ使用量が下がらないのは正常な動作となります。
実際のメモリの使用状況についてはパフォーマンスモニターの以下の項目から確認することができます。
SQL Server: Memory Manager オブジェクト
http://msdn.microsoft.com/ja-jp/library/ms190924.aspxKB321363の内容に関しては、基本的な考えについては最新の SQL Server 2014 までのバージョンを含めて共通ですので、こちらの内容は利用できるかと。
以上、ご参考になれば幸いです。
- 編集済み Masayuki.OzawaMVP, Moderator 2015年1月15日 23:35
- 回答としてマーク tamaitomoki 2015年1月16日 7:20
- SQL Server のプロセスが確保したメモリは基本的に開放しない
すべての返信
-
2008でも2012でも同様です。
- 回答の候補に設定 nagino - 引退エンジニア 2015年1月15日 10:06
- 回答としてマーク tamaitomoki 2015年1月16日 7:20
-
SQL Server では、基本的には以下のような動作となります。
- SQL Server のプロセスが確保したメモリは基本的に開放しない
# 「ページ内のメモリのロック」の権限が付与されていない場合で、他のプロセスからメモリの取得要求があった場合は、ワーキングセットのトリミングという形で、メモリをページアウトし開放することもあります。 - データのキャッシュやクエリのキャッシュをクリアした場合は、確保したメモリの中で、Free List 化することで、空き領域とする。そのため、確保したメモリのサイズについては減らない
- SQL Server のプロセスが 10GB のメモリを確保し、8GB をデータ / 2GB をクエリのキャッシュで使用していた場合に、DBCC DROPCLEANBUFFERS/DBCC FREEPROCCACHE でキャッシュをクリアした場合は、
プロセスは 10GB のメモリを確保し、プロセス内で空き領域のメモリとして 10GB を確保した状態となる。
そのため、SQL Server でメモリ使用量が下がらないのは正常な動作となります。
実際のメモリの使用状況についてはパフォーマンスモニターの以下の項目から確認することができます。
SQL Server: Memory Manager オブジェクト
http://msdn.microsoft.com/ja-jp/library/ms190924.aspxKB321363の内容に関しては、基本的な考えについては最新の SQL Server 2014 までのバージョンを含めて共通ですので、こちらの内容は利用できるかと。
以上、ご参考になれば幸いです。
- 編集済み Masayuki.OzawaMVP, Moderator 2015年1月15日 23:35
- 回答としてマーク tamaitomoki 2015年1月16日 7:20
- SQL Server のプロセスが確保したメモリは基本的に開放しない