磁盘延迟与吞吐量

Eri*_*gum 4 performance sql-server

我在网上搜索了一段时间,但没有找到我满意的答案。我正在提供新光盘的 VM 上测试 SQL Server。

如果磁盘延迟减少,吞吐量不应该增加吗?磁盘延迟和吞吐量之间是否存在直接关联?似乎如果我有更快的磁盘,我应该会看到吞吐量的增加。

Jac*_*las 8

预先定义术语可能会有所帮助。

术语延迟(至少)以两种方式使用 I/O。它可能意味着:

  • 在任何给定时间为 I/O 提供服务所需的平均时间。这就是 Paul Randal 在“如何从 SQL Server 内部检查 IO 子系统延迟”中使用它的方式并且可以使用(例如)性能监视器和诸如“平均磁盘秒/读取”等计数器进行测量。我将称其为“测量的”延迟,它与给定时间的队列长度相关(成反比),但这是一个更有帮助的度量,因为从用户的角度来看,它很容易与实际性能相关联。
  • 单个 I/O 隔离所需的平均时间。这就是它通常用于 HDD 和 SSD 的规格表的方式,例如Seagate 的这种。我将其称为“固有”延迟(有时也称为“访问时间”)。

吞吐量在不同的上下文中也可能意味着不同的东西:

  • 顺序数据传输的最大速率,通常以 MB/秒为单位
  • 通常以 IOPS 衡量的 I/O 操作的最大速率
  • 当前的数据传输速率,例如使用性能监视器与计数器(如“磁盘字节/秒”)测量的速率

似乎如果我有更快的磁盘,我应该会看到吞吐量的增加。

由于您对此的表述方式,我认为您是在专门讨论引用的 MB/sec 和磁盘驱动器的“固有”延迟。如果是这种情况,那么答案是“不,磁盘延迟和吞吐量之间没有直接关联”。HDD 的延迟受寻道时间和旋转速度的影响,但它仅适用于第一次读取:随后的顺序读取没有相同的延迟。SSD 的机制不同,但制造商仍然可以调整它们以获得高“吞吐量”或高 IOPS,并且块大小等问题很重要。