提问人:chen 提问时间:10/21/2023 更新时间:10/31/2023 访问量:62
sqlserver内存问题,如何查看内存使用情况
sqlserver memory problems,How to check the memory usage
问:
我想知道sqlserver是否有内存瓶颈,可用内存需要有多糟糕
您能看到哪些语句使用更多内存吗?
谢谢
看了一些资料看不懂,想问问有没有办法
SQLServer 2019
答:
适合...
...合适的工作
如果你试图将你的服务器作为一个整体来分析,那么Erik Darling的sp_PressureDetector
是一个很好的工具,它将为你提供有关内存(和CPU)消耗和争用的深入信息。请务必在页面底部观看他关于该工具如何工作以及如何使用它的视频。
...如果你不知道工作(问题)
要更全面地了解您的服务器问题(内存与否),Brent Ozar 网站上的 First Responder Kit 也将为您提供深入的信息。特别是值得一看的。如果内存问题是您最大的问题,那么它们将在这些工具的结果列表中排名靠前。sp_Blitz
sp_BlitzFirst
...如果作业是特定查询
如果您有一个特定的查询或几个查询要进行故障排除,可以重复运行,并且可以获取其实际的执行计划,则可以将鼠标悬停在计划中第一个运算符节点的左侧,称为 。如果该金额过多,它将显示数量和任何警告(其中大部分在执行期间未使用):SELECT
Memory Granted
评论
除了上面其他人所说的之外,我还建议在一段时间内监视 Windows 性能计数器。这些不会告诉你导致内存压力的查询,但它们会帮助你了解你是否遇到内存压力以及何时遇到内存压力。
对于内存,您应该监视:
内存 – 可用 MB
内存管理器\内存授予挂起
缓冲区管理器\页面预期寿命 (PLE)。
还有其他的,但我会从这些开始。
如果 Memory Grants Pending 始终高于零,则服务器的内存请求数超出了其处理能力。
PLE更具争议性,更难确定。重要的是要记住,PLE 急剧下降是正常的,尤其是在维护窗口期间,然后逐渐恢复。我只真正关心 PLE 是否在很长一段时间内持续处于低水平。对于每个环境,“低”的构成都是不同的。
最后,不要忘记监控您的等待统计数据。如果您有任何RESOURCE_SEMAPHORE等待的情况,那么您就有内存压力。
最重要的是为这些统计数据的“好”建立一个基线,然后根据该基线监控性能。在将更多硬件投入问题之前,始终先尝试调整工作负载。
评论