SQL Server 2008 R2 SQL Server遇到了x次(或多次)I / O请求花费超过15秒才能完成文件

当我直接在生产或QA数据库上更改或创build存储过程时,几秒钟后,我开始体验超时,应用程序不可用。

日志文件显示此错误:

SQL Server在数据库[QA_Database]中遇到3次(或多次)I / O请求花费超过15秒的时间才能完成文件[C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ DATA \ QA_Database.ldf] ](9)。 OS文件句柄是0x0000000000000568。 最新的长I / O的偏移量是:0x0000002821a200

我们安装了SQL Server 2008 R2,包括最新的Service Pack。 生产和分期环境是完全分开的。

我试图在QA上重现,但无济于事。 我不知道它可能是什么。

很简单。 它是这样说的:

SQL Server遇到3次(或多次)I / O请求花费超过15秒的时间才能完成

SQL Server发出IO请求,需要10秒以上才能完成。 通常情况下,对于高性能的数据库服务器来说 – 2-3毫秒,而不是15.000或更多。

文件path:

[C:\ Program Files \ Microsoft SQL

使我build议你没有生产服务器,但有人谁不知道如何安装一个SQL服务器命令硬件和设置。 因此,您的数据库文件位于(慢速?)系统驱动器上,而不是进行IO优化设置,而您的光盘只是完全覆盖。 在系统磁盘上运行高性能数据库而不是优化磁盘布局时会发生。 数据库服务器很难明智地configuration硬件。

只有解决scheme是:

  • 检查缺less的索引。 表扫描 – 尤其是wehen memroy是不够的 – 是非常有意义的,可以超载每个IO子系统。
  • 如果查询优化不产生结果,那么使用一些更快的光盘来获得适当的数据库服务器。 最后,您的productzion数据库可能需要比慢速系统驱动器提供的更多的IOPS。

就像例如,我在这里有一个较小的数据库(800GB),我使用8个Velociraptors作为数据库文件的RAID 10和日志的2x120gb SSD – 这很好地将日志IO从数据库IO中分离出来。 而且我对数据库文件磁盘IO不满意,并且很快就会使用SSDcaching进行升级。

没有(除非使用率极低的系统数据库)在C上存在

事实上,你不提及你的磁盘布局上的IO相关的问题,使我build议你不知道数据库是如何工作的IO明智的,有人只是订购了一个便宜的戴尔服务器,认为“它有一个Xeon,所以它是快的”,而数据库经常不关心CPU,并完全IO接口。

这个错误可能表明什么东西来自于指定的或者有缺陷的硬件(我们只是有这个错误而且是一个错误的连接到PowerVault的电缆)到错误configuration的数据库或RAIDconfiguration。

IO延迟发生在您假设的事务日志文件与您的数据库在同一个arrays上。 通过将两个小型驱动器configuration为单独的RAID-1(镜像)arrays并将事务日志移到那里,您将会看到一个好处。