gpt4 book ai didi

sql-server - SQL内存-查看实际使用的内存和可用内存

转载 作者:行者123 更新时间:2023-12-03 01:24:22 25 4
gpt4 key购买 nike

我做了一些研究,发现了几种不同的方法来查看 SQL Server 实际使用了多少内存(因为任务管理器不准确,因为 SQL 会为自己保留尽可能多的内存)

我发现这两个资源最有用:

How much RAM is SQL Server actually using?

How to analyze 'dbcc memorystatus' result in SQL Server 2008

但是,我遇到的困难是,当我在同一服务器上尝试这两种方法时,我无法关联这些数字。

与查询“dbcc memorystatus”VM 保留和 VM 提交相比,我从性能计数器(SQL 内存管理器 - 总服务器内存和目标服务器内存)得到非常不同的结果。

它们似乎都以“KB”列出,但数字却相差甚远。也许我没有看到正确的结果(也许VM保留/提交不是物理内存读取而计数器是?但是在这种情况下,SQL查询中的哪里显示SQL正在使用的内存量/保留,因为没有一个结果看起来像与性能计数器对应的数字)

如果有人能给我一些指导,考虑到我在 SQL 性能监控方面不是很有经验,我将非常感激。

提前谢谢您。

最佳答案

查看服务器总内存和目标服务器内存的 Perfmon 计数器将为您提供缓冲池缓存的大小,它是 SQL Server 使用的总内存的子集。但它通常是最大的单个内存池。例如,在我的开发服务器上,我的总服务器内存为 2759 MB。您可以使用以下查询来提取该数字:

SELECT object_name, counter_name, cntr_value AS 'Total Server Memory (KB)'
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Total Server Memory (KB)'

另一方面,DBCC MEMORYSTATUS 显示大量信息。如果向下滚动大约 3/4,您将看到一个结果集,其中包含名为“Buffer Pool”和“Value”的列,第一个缓冲池名为“Commited”和“Target”。这两个值列为 8 KB 页,因此将该值乘以 8192 即可得到以字节为单位的结果,然后除以 1048576 即可得到以 MB 为单位的结果。在我的开发服务器上,我有 353,230 个页面,即 2759 MB。

DBCC MEMORYSTATUS 的第一个结果集提供 SQL Server 保留和提交的虚拟内存 (VM) 量。我会忽略“保留”,因为它不能很好地指示实际使用了多少内存(这就是“提交”值)。此外,保留的内存比我所有服务器中的总物理内存高很多。如果您有“已分配锁定页面”值,则“VM 已提交”值可能约为 400 MB - AWE 和锁定页面不计入提交费用,这就是任务管理器显示错误值的原因。

除非您遇到内存管理方面的特定问题,否则您不需要深入研究 DBCC MEMORYSTATUS。我的经验法则是适当调整缓冲池的大小,让可用物理内存较低以避免浪费内存(~1-2 GB,但 Windows 将始终尝试保持 128-256 MB 可用物理内存),以及您的“峰值” Commit Charge”(来自任务管理器)永远不会高于服务器中的物理内存量。

关于sql-server - SQL内存-查看实际使用的内存和可用内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6189927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com