Some applications use for their routine operations multiple writes to independent
data streams; the interactions of the two streams causes a performance
problem. We have seen many applications that were having
performance problems caused by another process writing large amounts of
data to a log file. The two processes were both putting a heavy load on
the same disk. By moving the log file to a different disk, the system ran
much faster. Similar problems, with similar solutions, happen with databases
maintaining a transaction log, large software build processes writing large
output files, and journaled file systems maintaining their transaction log.
In all these cases, moving the write-intensive portion to a different disk
improves performance.
Sometimes, the write streams can be written to disks of different quality.
In the compilation example, the output file can be easily reproduced, so the
output disk might be a RAM disk or a fast local drive.
In the case of a database, individual table indices, or views, are often
updated frequently but can be recreated easily. They take up large amounts
of storage, as they are essentially frozen copies of database table data. It
makes sense to put the table data on a reliable but slower RAID array and
to put the index and view data on a fast but not necessarily reliable array
mirror. If the fast array is subdivided further into individual sets of views or
indices, and if spare drives are included in the physical array, even the loss of
a drive can cause minimal downtime with quick recovery, as only a portion
of the dynamic data will need to be regenerated and rewritten.