对一个典型的7200RPM硬盘,平均寻道时间可能是8.9ms,也就是说磁头平均要花8.9ms的时间才能移动到磁盘表面的任意磁道,但是且慢,磁头移动到了正确的磁道并不等于你的数据正好到了磁头下面可以读,磁头还需等待平均是磁盘旋转一圈周期的一半时间才能读到想要的数据,对7200RPM来说,每秒120圈,这就是4.2ms,这就是说磁头平均移动读一次至少要8.9+4.2=14.1ms,1秒钟只能读70次,当然假如你不是对全盘任意位置读取数据,而只是限定在开头的比如1/10容量的分区随机存取,那样平均寻道时间会短不少,但4.2ms平均等待时间是不变的(如果用NCQ这方面会有所改善,这里不讨论),所以1秒钟随机存取次数也不会超过150次(典型的10K硬盘工作时次数也不超过250次/秒)。假如我们每次只读4KB的数据,那随机访问你每秒钟只能读0.6MB/s的数据,或者假如你的数据库内容没有缓存入内存,你每秒只能读不到150条记录,这和7200RPM硬盘典型的66~33MB/s持续传输速率比,落差无异是十分巨大的。
早期的硬盘每个磁道的容量都是一样的,大概是为了解码电路工作在固定频率上吧,现在的磁盘采用可变的磁道容量,所以越靠外面的磁道容量越大,目前典型的7200RPM硬盘传输率在66到33MB/s之间变化,这个最大速率取决于磁道的线密度,磁道的最大半径,转速,而磁道的最小半径决定了最低速率。10K的硬盘一般采用比3.5寸盘小一点的3.3寸盘,半径小了些,同时由于最小半径与最大半径的比值比7200的盘大,面积进一步缩小,所以同样的线密度下容量会少不少,而传输速率增加则没有40%这么高,典型比如最大80Mb/s。15K的盘速度更高,尺寸更小,一般是2.5寸的,所以同样的线密度的情况下持续传输率并不会有什么明显的增加,而容量又小了很多,当然如果还是3.5寸的,那增加还是不少的。
高速盘的主要优点是缩短了随机存取的时间,这个是随转速和盘径的减小直线增长的,15K盘和7200比几乎能增加一倍,缺点是昂贵和单盘存储容量的下降。如果你期望增加持续传输率的话,磁盘阵列应该是更好的解决方案。大部分应用程序工作在随机存取和持续传输之间,所能期望得到的速率就取决于读取数据的方式。简单的说,假如一个盘比另外一个盘,随机寻道时间和平均等待时间降低了30%,平均传输速率增加了30%,那不管什么应用,磁盘速度都可以说提高了30%,如果两边的性能增长不是这么平衡,那改善的效果就取决于应用读数数据的方式更趋向于随机还是顺序存取了。
RAID0用分片存储方式把数据分布在两个盘或更多盘上,读写持续传输速率会增加一倍,随机读写速度按理论是有可能增加的,这取决于数据分片大小和读写的大小,不过总的来说很值得怀疑;硬件RAID1的随机和持续写速率和单个硬盘是完全一样的,但读的话由于可以从两个硬盘随意选一个读,随机读性能会有明显的增加,可能至2倍,至于持续读取速率理论上有可能增加,不过我很怀疑有这方面的优化,估计还是一样的;RAID5由于写要N+1个盘一起写,但是因为条带化和XOR校验芯片的计算,应该是可以达到一个更快的速度。