SQL Server 2005のどのデータベースがどのくらいのRAMを使用しているかを調べる


12

私の友人が今日、私に(彼の興奮した顧客を落ち着かせようと)尋ねました。どのデータベースがどの時点で(サーバーのRAMに)どのくらいのメモリを使用しているかをSQL Server 2005で確認できます。

それはまったく可能ですか?もしそうなら-どうやって?組み込みのSQL Serverツールを使用してこれを行うことはできますか、または追加のサードパーティオプションが必要ですか?

彼の顧客は、専用のSQL Serverマシンが突然、4 GBのRAMの200 KBを除くすべてを使用するために、動揺しました。これは本当に問題だとは思いませんが、この男は多かれ少なかれ一晩で起こったと主張しているので、彼はこのメモリ使用量の増加の原因を知りたいと思っています。

マーク

回答:


25

これは、クエリがバッファプールにさらにページを読み込もうとし、バッファプールがそれを収容するためにより多くのメモリを取得したことが原因である可能性があります。これが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のメモリ使用量を監視する方法)をチェックアウトすることもできます。

お役に立てれば!


あなたは天才だ、ポール!
marc_s 09年

2

Paulは上記のように、SQLは可能な限りのメモリをすべて使用するため、友人はSQLが使用するRAMの量を制限することもできます。

SQL Serverが使用するメモリ量を2000 Mb(または最適と思われるもの)に制限します。

--Enable advanced options:
USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE

--Set the maximum amount of memory to 2000 MB:
USE master
EXEC sp_configure 'max server memory (MB)', 2000
RECONFIGURE WITH OVERRIDE

--Display the newly set configuration:
USE master
EXEC sp_configure 'max server memory (MB)'

--Set 'show advanced options' back to default:
USE master
EXEC sp_configure 'show advanced options', 0 
RECONFIGURE WITH OVERRIDE

ありがとう-私はメモリを制限する方法を知っていましたが、どのdbがどのくらいのバッファプールメモリを使用しているのかをいつでも見つけることができませんでした。
marc_s 09年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.