SQL Server 2005 的高 I/O 有多高?

SQL Server 2005 的高 I/O 有多高?

我有一个 RAID 1 设置,平均每个磁盘有 40 - 60 个 I/O,平均磁盘队列长度为 0.5。根据BOL 示例下面,这不是瓶颈。

磁盘读取次数/秒 80
磁盘写入次数/秒 70
平均磁盘队列长度 5

在这种情况下,您将遇到每个磁盘 (80 + (2 * 70))/2 = 110 个 I/O,并且磁盘队列长度 = 5/2 = 2.5,这表明存在边界线 I/O 瓶颈。

这让我想到一个问题,多高才算是高 I/O?平均磁盘队列长度有据可查,即每个 CPU 不应超过 2 个,但 BOL 没有提及每个磁盘的 I/O?

答案1

快速澄清...“平均磁盘队列长度有据可查,它不应该超过每个 CPU 2”应该是“平均磁盘队列长度有据可查,它不应该超过每个主轴 2”,但这个常识不一定是正确的。

Microsoft SQL 支持团队提供了有关此主题的更多信息:http://blogs.msdn.com/psssql/archive/2007/02/21/sql-server-urban-legends-discussed.aspx

当我读到你的问题时,你想知道硬盘的每秒 IOPS(IO 次数)是多少。答案是“当你拥有的 IOPS 超过硬盘支持的数量时”。15K Seagate Cheetah 支持的 IOPS 比 5400 RPM 笔记本电脑硬盘要多得多。在你的情况下,你将硬盘设置为 RAID 1(这增加了冗余度,但会降低可用的 IOPS,因为你将相同的数据写入两次)。

摘自维基百科(http://en.wikipedia.org/wiki/IOPS),一些标准数字:

  • 7200RPM SATA 硬盘 - 约 90 IOPS
  • 10kRPM 串行连接 SCSI 驱动器 - 约 140 IOPS
  • 15kRPM 串行连接 SCSI 驱动器 - ~180 IOPS
  • 简单的 SLC SSD - 约 400 IOPS
  • 英特尔 X-25 M (MLC;截至 2009 年 3 月[更新],无竞争对手) - ~1,500 IOPS
  • Intel X-25 E (SLC;截至 2009 年 3 月[更新],无竞争对手) - ~5,000 IOPS(英特尔的数据表显示写入 3,300、读取 35,000 IOPS,而 5,000 是混合测量的)
  • ioDrive,一款带闪存的 PCI-Express 卡 - >80,000 IOPS
  • DDRdrive X1,2009 年 5 月基于 PCI Express 的固态硬盘 - 300,000+(512B 随机读取 IOPS)和 200,000+(512B 随机写入 IOPS)
  • Violin Memory Appliance,1,000,000+ 随机读取 IOPS

答案2

磁盘读/写数据本身(对我来说)没有必要定义特定的高 I/O,因为硬件的进步很快就会使这些东西过时。关键是要找到导致延迟的原因,而不仅仅是那些可能无害但频繁的磁盘活动。

是一篇关于 SQL Server 硬件瓶颈的非常好的文章

答案3

您的磁盘制造商应该提供有关您可以处理的 IOPS 类型的信息。与磁盘队列同样重要的是 sec/read 和 sec/write - 任何持续超过 15-20ms 的情况都可能会造成损害。

相关内容