Sql server SQL server内存调查
我正在调查SQL server 2012内存使用情况。我运行了下面的查询Sql server SQL server内存调查,sql-server,memory-management,Sql Server,Memory Management,我正在调查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_N
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的最大使用内存是28311MB,它告诉我同一查询的当前总使用量是24303MB。但是,当我运行第二个查询以了解数据库使用的24303MB的更多细节时,在查询中的所有值都没有添加到24303MB,甚至没有添加到附近
那么,我在这里遗漏了什么呢?您可以通过下面的查询获得由职员提供的SQL Server内存摘要以及总计:
SELECT type, SUM(pages_kb)*1024 AS bytes
FROM sys.dm_os_memory_clerks
GROUP BY ROLLUP(type);
缓冲池不是SQL Server唯一需要内存的东西。例如,它也有一个计划缓存。我如何知道哪个数据库是什么类型的内存?我想做的一切都可以帮助我决定为sql设置最大内存大小的大小server@KashifKhan,最大内存应设置为
物理内存可用-操作系统内存需要-其他应用程序需要
。不确定按数据库划分使用情况将如何帮助您做出决定。这个问题更适合dba.stackexchange.com,因为它与编程无关?我正在寻找一个查询,它将帮助我分析SQL server使用的各个数据库的所有类型的内存。您的缓冲池查询已经按数据库分解了缓冲区缓存的使用情况。这通常是最大的内存消耗。许多内存池在所有数据库之间共享,因此内存使用情况不容易按数据库分类。