What is the best hard drive for random-reading small blocks

We need to do random reads (seeks) on 5 KB blocks from a huge file (150 gigabyte). What hard drive is the best suited for this type? What is the expected performance from an SSD in this scenario?

I heard that SSD excel in random reads, but perhaps not when the block sizes are this small.


Dave Cheney gave a great answer, with emphasis on the write penalties of SSDs.

If the drive is almost exclusively used for reads then SSDs rule absolutely. The "best" drives on balance, with a look at controller & firmware maturity, consistent performance, and price, are the Intel X25-M(ainstream) G2 and X25-E(xtreme).

The X25-E uses SLC flash, and is intended for server use. However, if the write load is very light, you could also consider the X25-M for heavier use. The main benefit of the E's SLC flash is much improved write endurance.

You can see the random 4kb block read performance of both drives here. Note the 10k RPM mechanical drive at the bottom of the chart. I'll quickly summarize Anantech's results:

  • Random 4 KB reads aggregate transfer rate: Western Digital Raptor mechanical HD ~0.7 MByte/s, Intel SATA SSD ~50+ MByte/s.
  • Random 4 kb reads average latency: WD Raptor ~17.3 milliseconds, Intel SSD ~0.21 milliseconds.

There are several interesting SSD drives on the way to market, but they're not quite ready yet. Intel isn't going to really update its SSDs before Q4 this year. So I'd go for the current Intel lineup, possibly attached to a (fast, modern) RAID controller.

Fusion I/O are the very fastest drives available right now. In the future I think performance SSDs will all use the PCI-Express bus, as Fusion I/O already does. Right now Fusion I/O is bloody expensive, but absolutely worth considering if your workload is transactional with a lot of writes.


I'd be tempted to use a FusionIO drive (CLICKY), we've tested these and they are STUNNING even in comparison to the fastest SSDs but they're not cheap, that said other than a RAM drive they're about as fast as you can get (>600MB/sec) irrelevant of block size.


SSD's are fine reading random blocks of any (reasonable size), where they fall down is writing data. Traditional spinning rust harddrives allow you to rewrite data at a sector level (traditionally 512 bytes, although larger sector sizes are available now), that is the minimum data you can write to a drive, physically, is 512 bytes. Even if you change 1 byte of a file, the OS will rewrite the whole sector (possibly even the whole block which is 4096 bytes).

SSD's have the idea of pages, which are larger (somewhere upwards of hundreds of kilobytes). A page can be written at a sector size, but it can only erase at a page size. Therefore, if you want to change data already written to an SSD, the drive needs to read the whole page, erase it (very slow operation), and then write the entire page back.

SSD's do overcome this using additional capacity of pages not exposed directly to the OS, and using wear levelling, but these only delay the inevitable page erase operation, not obviate it.