我正在调查SQL server 2012的内存使用情况。我运行了以下查询
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。但是,当我运行第二个查询以了解更多详细信息数据库使用的24303 Mb是什么时,在查询的所有值之后,它们不会添加到24303 Mb甚至也不接近。
那我在这里错过了什么?
答案 0 :(得分:0)
您可以通过以下查询获得职员的SQL Server内存摘要以及总数:
SELECT type, SUM(pages_kb)*1024 AS bytes
FROM sys.dm_os_memory_clerks
GROUP BY ROLLUP(type);