我有一个数据库,它的速度总是慢得像爬行一样。它的硬件绰绰有余,所以我相信这不是问题所在。当通过活动监视器查看资源等待时,缓冲区 I/O 是迄今为止最高的。累计等待时间有数十万,而其他等待时间仍然只有几百。这自然让我开始将缓冲区 I/O 视为问题所在。
我设置了一个性能监视器来记录每秒的完整扫描次数和缓冲区缓存命中率。缓冲区缓存命中率始终在 98-100 范围内,因此一切似乎都很好。我的每秒完整扫描次数范围从 < 1 到略高于 3。这对我来说似乎很高,特别是因为它达到 2+ 并不罕见。
这似乎是导致速度缓慢问题的最可能原因吗?如果我看到如此高的缓冲区 I/O 等待时间,还有其他什么建议可以监控吗?
答案1
我猜你已经排除了硬件存在问题的可能性(“硬件已经足够了”)。如果从客户端角度来看应用程序陷入停滞,请不要忘记网络延迟 - 这很容易被忽视。
看看 Perfmon 计数器页面预期寿命同时页面查找次数/秒,页面读取次数/秒, 和每秒全面扫描。
我从未使用过分析器,但您是否确定问题是否发生在特定的 SP 或查询上?您是否需要检查索引?