For a database that requires a dedicated partition, such as Oracle, tuning
the block size used by the database to the storage stripe block size, or vice
versa, can provide a very noticeable performance improvement. Factor in
block-level parity operations, as well as the size of the array. An application
using 32K blocks, served by a five-drive array using RAID 5 would be well
matched by a stripe size of 8K blocks: four data drives plus one parity drive
(4×8K = 32K). Greater performance can be achieved through more spindles,
such as a nine-drive array with use of 4K blocks. Not all applications will need
this level of tuning, but it’s good to know that such techniques are available.
This type of tuning is a good reason not to share storage between differing
applications when performance is critical. Applications often have access
patterns and preferred block sizes that differ markedly. For this technique
to be the most effective, the entire I/O path has to support the block size.
If your operating system uses 4K blocks to build pages, for instance, setting
the RAID stripes to 8K might cause a page fault on every I/O operation, and
performance would be terrible.