Editorials

Using Shared Storage for Database Files

We have considered many different ways to optimize database storage using self hosted implementations. Memory, Direct Attached disks, RAID and SAN technologies, all hosted on proprietary hardware, allow you to configure storage to your specific needs. But what do you do when you are one consumer of a shared storage mechanism, hosted on either virtual machines in house, or in a cloud based model?

The key difference in a shared model is that you have less control over the physical host devices on which your virtual devices reside. If you share a SAN in an apartment model, either in house or from a service provider, the the SAN is probably not going to be tuned specifically for your database needs. One thing I have found really helps a database server that shares a SAN is to make sure it has a significant amount of memory.

From the perspective of perception, without any testing metrics, I found my database server hosting databases with a combined size of 2 TB, had marked increase in performance when I increased the server memory from 32 meg to 64 Meg. Performance again increased dramatically when I increased the RAM to 128 Meg. When I increased it to 256 Meg, there was not any noticable jump like before. Don’t use that as a reason to purchase more memory. Use it as a anectdote to prompt areas where you may want to do reasearch for your system.

The same kind of issue is experienced when you are running a virtual server, hosting your database service. You are sharing components from the host operating system. Again, you need to be aware of how the resources assigned to your VM are supported. You also need to be aware of the load being consumed by other virtual machines on the same host.
My memory example above was on a virtual machine as a single client on a host.

In an Azure or EC2 world, you are again using virtual machines, if you use software as a service or infrastructure as a service. You are one consumer of a shared host. In this case you have no control over the balance of the different VM utilization. That is up to provider to provision correctly. So, if your performance isn’t adequate, you probably need to look into purchasing a higher tier of performance.

Cheers,

Ben