通过查询存储,我可以跟踪物理读取的大小以及发生的频率。我如何判断这些数字是否太大以至于表明我需要更多 RAM?
为此,我的其他研究表明我没有 RAM 问题:
- 我的等待率为 99% SOS_WORK_DISPATCHER
- 页面预期寿命在一天中变化很大,但我从未见过它低于 200。
- 最旧的查询
sys.dm_exec_query_stats
大约一个月前。
通过查询存储,我可以跟踪物理读取的大小以及发生的频率。我如何判断这些数字是否太大以至于表明我需要更多 RAM?
为此,我的其他研究表明我没有 RAM 问题:
sys.dm_exec_query_stats
大约一个月前。
对于监视等待,您通常可以忽略某些良性等待。对SQLSkills 的快速查找表明
SOS_WORK_DISPATCHER
可能可以忽略它,因此我将查看下一个等待类型。如果您想要可以使用的排除列表,这是 DBA Dash 使用的查询(我创建的监控工具)来捕获等待。我不能 100% 确定此排除列表的原始来源 - 可能是 SQLSkills,这是我通常去的地方获取有关等待类型的信息。
如果下一次等待是
PAGEIOLATCH*
等待,则可能表明更多的内存可能是有益的。PLE 往往不是那么可靠的指标。我还会查看监视磁盘 IO 以了解从磁盘读取了多少数据。我倾向于使用sys.dm_io_virtual_file_stats中的信息来实现此目的。也可以使用 Perfmon 计数器。另外,请查看磁盘延迟,将其作为磁盘性能的指示。
拥有的内存越多,需要从磁盘读取的数据就越少,查询的执行速度也会更快。更多的内存几乎总是有益的,但如果
PAGEIOLATCH*
不是服务器上的重要等待类型,则可能不会产生预期的影响。查询存储对于很多事情都很有用,但我不会将它用于此目的。至少不是作为起点。我将从更高的级别开始 - 等待统计信息和服务器/数据库/驱动器级别 IO 统计信息。如果您确定您的服务器受到 IO 瓶颈,查询存储可用于确定您可能需要考虑调整哪些查询。您可能会发现一些简单的方法可以减少 IO。如果没有,更多的内存可能是一个解决方案。
查询存储在数据库级别工作,即使这样,它也可能无法跟踪您的整个工作负载。
sys.dm_io_virtual_file_stats
或 perfmon 计数器将在更高级别上更准确地跟踪您的 IO,并且等待统计数据将让您了解 IO 是否是一个重要的瓶颈。但是,如果您确定存在 IO 瓶颈,查询存储可能能够帮助识别哪些查询造成了该瓶颈。