2017-02-02 17 views
0

SQLサーバー2012のメモリ使用量を調べています。私は、以下のクエリSQLサーバーメモリ調査

SELECT c.counter_name, c.cntr_value/1000 AS 'Memory (Mb)' 
FROM sys.dm_os_performance_counters c 
WHERE c.counter_name IN ('Free Memory (KB)', 'Total Server Memory (KB)', 'Target Server Memory (KB)'); 

SELECT DB_NAME(database_id) AS 'Database', COUNT(*) * 8/1024 AS MBUsed 
FROM sys.dm_os_buffer_descriptors 
GROUP BY database_id 
ORDER BY COUNT(*) * 8/1024 DESC 

そして、それの結果を走った:最初のクエリから

========================================= 
counter_name    Memory (Mb) 
========================================= 
Free Memory (KB)   5453 
Target Server Memory (KB) 28311 
Total Server Memory (KB) 24303 

========================================= 
Database    MBUsed 
========================================= 
DB1      7369 
DB2      3924 
tempdb     386 
WSS_UsageApplication 244 
SharePoint_Config  107 
DB3      95 

あなたは、私が使用されるようにSQL最大メモリ割り当て28311 MBでいることを見ることができる、それが私に語りました同じクエリからの現在の合計使用量は24303 Mbです。しかし、2番目のクエリを実行して、24303Mbがデータベースで使用されているものが何であるかを調べると、クエリのすべての値の後に24303Mbにも近くなりません。

ここで私は何が欠けていますか?

+0

バッファプールは、SQL Serverがするメモリを必要とすることを唯一のものではありません。 * one *の例では、プランキャッシュもあります。 –

+0

どのようにどのデータベースをどのような種類のメモリにするのですか?私がやりたいことは、SQLサーバの最大メモリサイズをどれくらい設定するかを決めるのを助けるだけです。 –

+0

@KashifKhan、最大メモリは 'physical_memory_available-os_memory_needs-other_application_needs'に設定する必要があります。どのようにデータベースの使用率を下げることがあなたの決定に役立つかはわかりません。この質問は、プログラミングに関連していないので、dba.stackexchange.comに適しています。 –

答えて

0

あなたは、以下のクエリで合計と一緒に店員によるSQL Serverのメモリの概要を取得することができます:

SELECT type, SUM(pages_kb)*1024 AS bytes 
FROM sys.dm_os_memory_clerks 
GROUP BY ROLLUP(type); 
+0

上記のクエリはどのデータベースにも何も教えてくれませんか?私は個々のデータベースによってSQLサーバによって使用されるあらゆる種類のメモリを解読するのに役立つクエリを探しています。 –

+0

バッファプールのクエリで、すでにバッファキャッシュの使用率がデータベースごとに低下しています。これは、通常、最大のメモリ消費者です。メモリプールの多くはすべてのデータベースで共有されているため、メモリ使用量をデータベースで簡単に分類することはできません。 –