像 sql server 这样的数据库管理系统依赖于文件输入/输出操作的及时进行。有故障或配置不当的硬件、固件设置、筛选器驱动程序、压缩、程序错误以及 i/o 路径内的其他情况都可能导致阻塞或延迟 i/o 问题,并且很快对 sql server 性能产生消极影响。
上述问题对 sql server 的影响因问题细节的不同而差异很大,但它们通常导致阻塞、锁存器争用和超时、过长的响应时间以及资源的过度利用。
阻塞 i/o 是指必须进行外部干预才能完成的 i/o 请求(通常是 i/o 请求包 (irp))。这种状况通常需要执行完整的系统重新启动或类似操作才能解决,并且强烈表明硬件有故障或者在 i/o 路径组件中存在程序错误。
延迟 i/o 是指无需干预即可完成但所花时间超过预期时间的 i/o 请求(同样,这通常是 irp)。这种状况的原因通常是硬件配置、固件设置或筛选器驱动程序干预,需要硬件或软件供应商提供帮助以便跟踪和解决。
sql server 2000 sp4 包含数据库和日志文件 i/o(读和写)逻辑以便检测延迟和阻塞状况。当 i/o 操作经过 15 秒钟或更长时间仍未完成时,sql server 会检测到并报告这一状况。以下消息将被记录到 sql server 错误日志中:
2004-11-11 00:21:25.26 spid1 sql serverhas encountered 192 occurrence(s) of io requests taking longer than 15 seconds to complete on file [e:\sedata\stressdb5.ndf] in database [stressdb] (7). the os file handle is 0x00000000000074d4. the offset of the latest long io is: x00000000022000".
该消息表明,当前工作负载需求超出了 i/o 路径或当前系统配置和功能,或者 i/o 路径含有不能正常工作的软件(固件、驱动程序)或硬件组件。
所记录的错误信息提供了以下信息:
| • | ### occurrences — 未能在 15 秒钟以内完成读或写操作的 i/o 请求的数量。 |
| • | file information — 完整的文件名、数据库名和受影响文件的 dbid。 |
| • | file handle — 该文件的操作系统句柄。可以通过调试器和其他实用工具来使用这一信息跟踪 irp 请求。 |
| • | offset — 上一个阻塞或延迟 i/o 的偏移量。可以通过调试器和其他实用工具来使用这一信息跟踪 irp 请求。(注:在记录该消息的时候,该 i/o 可能不再阻塞或延迟。) |
有关 sql server 2000 i/o 模式的更完整信息,请参阅 sql server 20i/o basics。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器