Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL server内存调查_Sql Server_Memory Management - Fatal编程技术网

Sql server SQL server内存调查

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

我正在调查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的最大使用内存是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使用的各个数据库的所有类型的内存。您的缓冲池查询已经按数据库分解了缓冲区缓存的使用情况。这通常是最大的内存消耗。许多内存池在所有数据库之间共享,因此内存使用情况不容易按数据库分类。