如何在生产框中检查我的 SQL 服务器的内存使用情况。我正在使用 SQL Server 2016。当我检查任务管理器时,它显示在 90% 以上。我认为这不是 sql server 的真实内存使用情况。
我有一个 SQL 性能工具 grafana,它显示的 CPU 使用率比我在任务管理器中看到的要少得多。我检查了资源监视器,可以看到平均 CPU 值。我对 SQL 服务器内存使用情况感到困惑。我正在尝试确定内存压力是否是我的某些问题的问题。
有人可以直接给出一个好的/正确的解释。
如何在生产框中检查我的 SQL 服务器的内存使用情况。我正在使用 SQL Server 2016。当我检查任务管理器时,它显示在 90% 以上。我认为这不是 sql server 的真实内存使用情况。
我有一个 SQL 性能工具 grafana,它显示的 CPU 使用率比我在任务管理器中看到的要少得多。我检查了资源监视器,可以看到平均 CPU 值。我对 SQL 服务器内存使用情况感到困惑。我正在尝试确定内存压力是否是我的某些问题的问题。
有人可以直接给出一个好的/正确的解释。
非常有用的脚本: https ://github.com/ktaranov/sqlserver-kit/blob/master/Scripts/SQLServer_Memory_Information.sql
您会看到详细的内存利用率:
https://www.sqlskills.com/blogs/glenn/sql-server-diagnostic-information-queries-for-november-2017/ SQL Server 2017 诊断信息查询:
见评论
(查询 14)
(47)
(62)
(63)
(64)
PS这不是一个详尽的答案
我首先要说任务管理器不是衡量 SQL Server 内存消耗的正确位置,当 SQL Server 服务帐户具有内存中的锁定页 (LPIM) 权限时,它不会告诉您正确的值。这是因为通常任务管理器跟踪
Process Private bytes
可分页内存并通过VirtualAlloc()函数分配,但服务帐户具有 LPIM 内存分配块是由不可分页的AWE API完成的,因此任务管理器不跟踪它,这可能导致不正确价值。SQL Server 使用分配给它的内存是很正常的,这通常看起来像是在使用高内存,但这很正常。如果某些工具显示低 CPU 使用率并且任务管理器显示高内存,请不要惊慌,这可能是正常的。要了解 SQL Server 正在使用多少物理内存,请使用以下查询
Phy_Memory_usedby_Sqlserver_MB -- 以 MB 为单位提供 SQL Server 使用的总物理内存 Total_Memory_usedBy_SQLServer_MB- - 以 MB 为单位提供 SQL Server 使用的总内存(RAM+页面文件)
要详细了解为什么不应该使用任务管理器,请参阅Fun with Locked Pages、AWE、任务管理器和工作集……
我不确定 grafana 工具,但是如果您运行下面的查询,它会显示当前分配的内存
您应该省略任务管理器,因为它在某些情况下不会正确报告内存分配信息,具体取决于应用程序使用的内存分配例程。在操作系统中,您应该对 perfmon 很好,因为它应该正确报告内存使用情况。您还可以使用 SQL DMV 报告内存信息,例如 sys.dm_os_sys_memory(根据您的需要和 SQL Server 版本,还有更多与内存相关的 dmv)。
这是一篇文章,解释了任务管理器不准确地报告 SQL Server 内存使用情况:
链接:停止使用任务管理器检查 sqls 内存使用情况