Download the authoritative guide: Enterprise Data Storage 2018: Optimizing Your Storage Infrastructure
Host Bus Adapters (HBAs)
Even a $2,000 HBA can make a significant impact on the performance of a large database. There are two areas of concern for HBAs:
- The number of outstanding I/O requests
- The largest request that can be made
Most HBAs set the default number of outstanding requests to 16 in the driver software. This limits the number of commands sent to the RAID devices. Given that with many disk drives and even with random I/O, 16 outstanding requests might not be enough to fully utilize the storage.
Many operating systems and device drivers limit the size of the I/O requests to values less than the request needed to read from or write to the table space. The limits within the device driver should be changed to allow larger requests. Setting this is of course different on every device drive and OS, and just to make things more interesting, it often changes.
Storage hardware is likely to be one of the most important parts for architecting a system for databases. You might want to have a number of different LUNs for the different types of I/O that will be occurring within the database. For example, you often have:
- High bandwidth requirements (64 KB) for the redo log files, and I/O to the redo logs is mostly writes
- High bandwidth, small block random (8 KB) I/O for the index searches, and in many cases I/O to the indexes is mostly reads
- Large block I/O (256 KB) for the table space, and typically I/O to the table space is mostly reads
As you can see, one size does not and cannot fit all of the requirements. Therefore you need to match the:
- RAID level with the typical access type for reads/writes
- Stripe width with the request size
- Bandwidth requirements with the RAID level and request size
- Cache policies with the type of I/O being done
While this is seemingly no easy task, if you break it down to the base level issues, the problem is not all that hard.