SQL Server磁盘队列长度过高的原因

jve*_*ema 5 performance sql-server

我有一个相当高吞吐量的应用程序,有时它会崩溃。这种情况并不常见——大约每三周左右一次。当它出现时,如果我检查 perfmon,我会看到 100% 的“平均磁盘队列长度”与服务器挂钩。

在此期间,我还看到许多来自 SQL Server 的良好连接失败消息。

我不是 SQL Server 专家,我可以做索引、备份等基础知识,但仅此而已。

什么会导致这样的事情呢?我在想,也许这是数据库大小的调整(可用容量减少到约 300MB [而且是一个 30 GB 的数据库]),或者可能是一些重新索引变得疯狂?

我确实有一张桌子,里面有大量的插入物。读取次数很少,但每秒插入次数很多,这并不罕见。

服务器也只有大约 4 GB 的 RAM,但我们确实有一个专用的仓库箱,每天晚上都会汇总数据,大部分繁重的查询都集中在其中。

有人对可能导致如此长的队列长度的原因有任何想法吗?

jve*_*ema 3

好吧,据我所知,这与很多事情有关:

  1. 调整文件大小(数据和日志)
  2. 1. 正在进行时发生大量插入
  3. 1. 正在进行时正在运行一个特别繁重的查询
  4. 一般来说,I/O 时间相当高的硬盘
  5. 服务器内存不足,因此将页面文件放在其他所有内容之上

以下是我的决心:

  1. 更改自动增长设置,以便在发生这种情况时我可以保持一致的增长,手动增长临时数据库文件和主数据库文件以拥有更多空间,向临时数据库添加额外的视频日志,并设置通知,以便我可以在数据库文件增长时手动增长低于一定的空间水平。
  2. [对此无能为力]
  3. 减少繁重查询的运行次数;它正在加载用户并不总是需要的数据,因此将其更改为按需运行
  4. [正在努力获取新服务器,这个应用程序正在快速发展]
  5. [正在努力获取新服务器,这个应用程序正在快速发展]

所以,无论如何,它是一大堆不同事物的组合,主要与 SQL 相关,但不完全相关(所以 Will 是正确的)。

我很乐意将答案分享给每个人,因为他们有一部分是正确的,但是你能做什么......