sql-server – 找出SQL Server 2005中哪个数据库使用了多少RAM

前端之家收集整理的这篇文章主要介绍了sql-server – 找出SQL Server 2005中哪个数据库使用了多少RAM前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的一个朋友今天问我(试图冷静他的一个激动的客户)如何在sql Server 2005中找出哪个数据库在任何给定时间使用了多少内存(在服务器的RAM中).

这有可能吗?如果是这样 – 怎么样?您可以使用内置的sql Server工具执行此操作,还是需要额外的第三方选项?

他的客户都很慌张,因为他的专用sql Server机器突然使用了其4GB RAM中的200KB.我不认为这是一个问题,真的 – 但是因为这个家伙声称它发生了或多或少的过夜,他想知道是什么导致了内存使用的增加…..

解决方法

这很可能是由于想要将更多页面读入缓冲池的查询引起的,并且缓冲池占用了更多内存以容纳它.这就是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

我在这篇博文Inside the Storage Engine: What’s in the buffer pool?中解释了这一点

您还可以签出KB 907877(How to use the DBCC MEMORYSTATUS command to monitor memory usage on SQL Server 2005),它将让您了解sql Server的其余内存使用情况(但不是每个数据库)的细分.

希望这可以帮助!

猜你在找的MsSQL相关文章