sqlserver内存问题,如何查看内存使用情况

sqlserver memory problems,How to check the memory usage

提问人:chen 提问时间:10/21/2023 更新时间:10/31/2023 访问量:62

问:

此问题是从 Stack Overflow 迁移而来的,因为它可以在 Database Administrators Stack Exchange 上找到答案。上个月迁移

我想知道sqlserver是否有内存瓶颈,可用内存需要有多糟糕

您能看到哪些语句使用更多内存吗?

谢谢

看了一些资料看不懂,想问问有没有办法

SQLServer 2019

sql-server sql-server-2012

评论


答:

2赞 J.D. 10/21/2023 #1

适合...

...合适的工作

如果你试图将你的服务器作为一个整体来分析,那么Erik Darling的sp_PressureDetector是一个很好的工具,它将为你提供有关内存(和CPU)消耗和争用的深入信息。请务必在页面底部观看他关于该工具如何工作以及如何使用它的视频。

...如果你不知道工作(问题)

要更全面地了解您的服务器问题(内存与否),Brent Ozar 网站上的 First Responder Kit 也将为您提供深入的信息。特别是值得一看的。如果内存问题是您最大的问题,那么它们将在这些工具的结果列表中排名靠前。sp_Blitzsp_BlitzFirst

...如果作业是特定查询

如果您有一个特定的查询或几个查询要进行故障排除,可以重复运行,并且可以获取其实际的执行计划,则可以将鼠标悬停在计划中第一个运算符节点的左侧,称为 。如果该金额过多,它将显示数量和任何警告(其中大部分在执行期间未使用):SELECTMemory Granted

Execution Plan - Memory Grant Warning

评论

0赞 Kris C 12/2/2008
这就是我认为 Excel 会做的那种解决方案 - 我明天将针对我的真实数据进行游戏;如果我无法让 ADO 查询事情继续进行,这看起来应该做需要的事情。我需要做大约 10 次,所以可能会有点痛苦:S 哦,excel...
0赞 FrugalShaun 10/31/2023 #2

除了上面其他人所说的之外,我还建议在一段时间内监视 Windows 性能计数器。这些不会告诉你导致内存压力的查询,但它们会帮助你了解你是否遇到内存压力以及何时遇到内存压力。

对于内存,您应该监视:

内存 – 可用 MB

内存管理器\内存授予挂起

缓冲区管理器\页面预期寿命 (PLE)。

还有其他的,但我会从这些开始。

如果 Memory Grants Pending 始终高于零,则服务器的内存请求数超出了其处理能力。

PLE更具争议性,更难确定。重要的是要记住,PLE 急剧下降是正常的,尤其是在维护窗口期间,然后逐渐恢复。我只真正关心 PLE 是否在很长一段时间内持续处于低水平。对于每个环境,“低”的构成都是不同的。

最后,不要忘记监控您的等待统计数据。如果您有任何RESOURCE_SEMAPHORE等待的情况,那么您就有内存压力。

最重要的是为这些统计数据的“好”建立一个基线,然后根据该基线监控性能。在将更多硬件投入问题之前,始终先尝试调整工作负载。