加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:46:51 所属栏目:MsSql教程 来源:网络整理
导读:我的一个朋友今天问我(试图冷静他的一个激动的客户)如何在SQL Server 2005中找出哪个数据库在任何给定时间使用了多少内存(在服务器的RAM中). 这有可能吗?如果是这样 – 怎么样?您可以使用内置的SQL Server工具执行此操作,还是需要额外的第三方选项? 他的客
我的一个朋友今天问我(试图冷静他的一个激动的客户)如何在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的其余内存使用情况(但不是每个数据库)的细分.

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读