これは、クエリがバッファプールにさらにページを読み込もうとし、バッファプールがそれを収容するためにより多くのメモリを取得したことが原因である可能性があります。これがSQL Serverの動作方法です。ボックスにメモリのプレッシャーがかかった場合、SQL Serverにメモリを放棄するように要求します。顧客は心配するべきではありません。
DMV sys.dm_os_buffer_descriptors
を使用して、どのデータベースで使用されているバッファプールメモリの量を確認できます。このスニペットは、各データベースのクリーンおよびダーティ(最後のチェックポイント以降に変更された、またはディスクから読み取られた)ページがバッファプールにいくつあるかを示します。さらに変更できます。
SELECT
(CASE WHEN ([is_modified] = 1) THEN 'Dirty' ELSE 'Clean' END) AS 'Page State',
(CASE WHEN ([database_id] = 32767) THEN 'Resource Database' ELSE DB_NAME (database_id) END) AS 'Database Name',
COUNT (*) AS 'Page Count'
FROM sys.dm_os_buffer_descriptors
GROUP BY [database_id], [is_modified]
ORDER BY [database_id], [is_modified];
GO
これについては、ブログ記事「ストレージエンジンの内部:バッファープールの内容」でもう少し説明します。
また、KB 907877(DBCC MEMORYSTATUSコマンドを使用してSQL Server 2005のメモリ使用量を監視する方法)をチェックアウトすることもできます。
お役に立てれば!