Answers:
要读取1024个字节(1024/512 = 2个扇区),您需要:
总计:10 + 3.33 + 5 + 3.33〜21.7毫秒
PS。不要认为“如果在扇区之间不进行搜索,则等待时间为0”。没有人说这些部门是相邻的。
我暂时要假设的是,您实际上是在试图部分了解决定实际数据速率的因素,而不仅仅是理论上的问题。通常,除非您像我公司那样为操作系统编写设备驱动程序,或者编写数据库引擎本身,否则今天所有这些细节都有些平凡。这些实际细节大部分被许多硬件和操作系统因素因素掩盖,过滤,补偿和隐藏,因此您通常无法直接观察正在发生的事情。
仍然了解导致和不导致性能问题的原因很重要。
数据库的平均“读取数据速率”将主要取决于您一次移动的IO的大小以及是否连续。它也依赖于磁盘本身,报告磁盘的真实硬件参数,这些参数通常只是模拟的。(例如,每个磁道上确实有600个扇区吗?由于磁盘的外部磁道要大得多,因此在过去30年中,任何磁盘在外部磁道上的扇区都比内部磁盘多。)这些是真实的参数:
数据库读取:通常表示扇区号将在整个磁盘上随机读取(大概是2个连续512个扇区的1024字节),并且没有一个扇区在内存或任何其他高速缓存中: 在这种情况下,您的平均数据速率为将:
10 MS =重新定位Head Seek :(请注意,这意味着您只能在1秒钟内执行100次搜索,因此100 KB /秒将是最快的一次,您可以随机读取1024个。)
1个 MS =命令开销=未知:过去一直很重要,最多8 MS。今天,它可能更依赖于您的操作系统,从而有效地处理您的请求。因此,如果您的系统也将许多MB换出到磁盘上,则系统将导致严重的速度下降。如今,磁盘往返的IO可能少于MS。可以使用SSD轻松对其进行测试,以模拟旋转的HD的总线和固件开销。假设您已经在正确的磁道或磁柱上,那么通常包括在此处,以切换读取磁头。这还包括将移动的数据返回到OS。注意您的总CPU中断时间保持在<1%,这可能表明磁盘硬件有问题。胡乱猜测?<1 MS,可能仍然很重要。
3.3 MS =旋转直到扇区位于头部以下:9000 RPM / 60秒= 6.67 MS。最接近或最远的几率是50%,因此每个IO的延迟为3.33 MS。注意:这意味着,如果磁头已经定位在正确的轨道上,则随机读取仍为3.33 MS,这意味着在1k IO时,最大数据速率永远不会超过300 KB /秒。
0.022 MS =磁头读取时间:6.67 MS / 600扇区* 2 = 1024读取==> 0.022 MS。这意味着该磁盘的最大数据速率为1 / 0.022 MS = 45,000 * 1024 = 46 MB /秒。对于数据库读取/查询,这是完全无关紧要的,而如果移动整个数据库,那将是最重要的因素。
因此,在这种情况下,您的“数据库读取”速率将为〜14.355 MS = 70 KB /秒。请注意,如果IO为512(忽略.022 MS),则速率是该速率的一半。使用2,048,则速率是原来的两倍。因此,最重要的参数是连续扇区的大小,直到获得完整的磁道读取为止(假设所有磁盘扇区本身都是连续的)。