Is there a performance advantage to isolating database logs and data on different volumes (same RAID array) across a SAN?

Solution 1:

Putting your log file on a separate volume, even if it's on the same raid, should be better performance than having the data and logs in the same volume. Each volume can only be access through one path at a time on most storage systems. This means that your logs and data would share the same controller port, controller cache, queue depth, and FC switch resources. Any of these could become a bottleneck, and putting your logs into another volume that shares as few of them as possible would likely result in a performance increase.

That said, there is both a performance and reliability reason to have logs and data live on separate disks, assuming you're not on one of those newfangled "wide striping" machines that use all the spindles in the array simultaneously. Each time you do a database write, it's logged, and each log takes a write (on top of the actual modification).

  • If you lose an entire raid (which is rare, but happens) that hosts both your logs and data, you risk real data loss unless your logs were replicated. Log shipping is not always supported with all databases.
  • During normal operation, if you have your logs and data living on the same small set of spindles, you can risk throttling actual database production with disk level performance bottlenecks.

You are on a raid 50. That's generally a sign that you're striping your data across a lot more than 8 or 16 disks. If this is the case, it's also generally true that you'll set up at least two raid-50s per disk type (of which you have one). The best solution for your situation is to put your data on the fastest (ie biggest) raid you have, and your logs on the other one.

Solution 2:

sorry about the link bomb

http://www.brentozar.com/sql/sql-server-san-best-practices/

Solution 3:

Generally speaking, to minimize write latency for a demanding database you'd want to split the logs and data to different volumes on different RAID groups, so there isn't resource contention between log and data for the RAID group's time.

Sounds like you've already got the drives configured into RAID groups, so you'll probably just want to look at provisioning the different volumes from different groups and shelves.