SQL Server 2005 无法解释的磁盘 IO

SQL Server 2005 无法解释的磁盘 IO

我有一个在 Windows Server 2003 64 位上运行的 MSSQL 2005 实例,由于我无法找到的原因,它导致了高排队磁盘 IO(读取,而不是写入)。

有些事情:

  • 我确信这是 SQL 服务器进程。
  • 由于磁盘活动频繁,CPU 低,RAM 利用率低,因此该盒子响应很慢。
  • 查看日志,有一些恢复操作已经完成,但似乎不是罪魁祸首(我可能是错的,但看起来它们在合理的时间内完成)
  • 使用“sp_who2”我没有看到任何可以解释我所看到的大量磁盘 IO 的东西。
  • 没有正在运行的备份作业。
  • SQL Server 未尝试自动扩展数据文件。

服务器进程可能在这里尝试执行什么操作?我还能在哪里查看 SQL Server 在后台尝试执行的操作?

谢谢,丹

  • 更新:重新启动服务器进程没有帮助。无论待处理的内容是什么,都会在重新启动后恢复。

  • 更新:使用 SQL Server Profiler 进一步分析后发现,这是我自己的查询之一。经常轮询的表上的索引有 98% 是碎片化的,显然导致了大量磁盘活动。

  • 更新:重建索引解决了这个问题。难以置信的是,一个小于 100k 行的表竟然会在一台相当强大的机器上造成这种麻烦。

答案1

好吧,我会尝试:

  1. 对硬盘进行碎片整理
  2. 运行 DBCC CHECKALLOC 和其他工具来检查数据库并重新索引表
  3. 虽然我认为这不太可能,但请检查你的逻辑磁盘配置

如果这些逻辑卷遇到大量并发 I/O 请求,则会发生磁盘抖动,因为超级卷是从同一组底层物理磁盘创建的。为了避免在这种情况下发生磁盘抖动,应注意在隔离的逻辑卷和物理磁盘上创建可能并发访问的分区。

相关内容