Those of you at last months SQL Server unleashed events may remember Prem Maher form the SQL Customer Advisory Team (SQLCAT),  talking about a whitepaper on virtualizing SQL Server, well it’s finally out and available here

This white paper, unlike some I have read, is a really deep study on the whole issue as you can see..

image .

The scenario used, takes  a 4 instance physical machine as a baseline under low medium and high workloads.  The is then compared with virtualizing this setup as one virtual machine using Windows server Hyper-V, one one physical machine, and then with creating a virtual machine for each of the four instances and putting those on the same physical machine.

It is awash with detailed analysis of waits and throughput and is well worth ploughing through whether you’re using SQL Server 2005 or running SQL Server on another Virtualization platform (apparently there are others and they are even supported to run windows server 2008 and sql server 2008).

The key general recommendations are:

  • Utilize either pass-through disks or fixed VHDs for your guest virtual machine storage. These are the best option for performance, and they should provide the best results for SQL Server workloads. Dynamic VHDs are not recommended due to performance reasons.
  • Avoid using emulated devices and instead ensure that integration components for Hyper-V have been installed and synthetic devices are being used for I/O, network, and so on. Synthetic devices will provide the best performance with lowest amount of CPU overhead.
  • The ability to use some of these techniques will depend on the hardware capabilities.
  • For workloads that make heavy use of network resources, refer to the Virtualization and Network sections of the Windows Performance Tuning guide for best practices on optimizing network for your particular configuration. Test the performance with of your workload, as workload characteristics can vary greatly.

These are also good guidelines for any high performance application like Exchange, SharePoint etc. but don’t take my word for it or that of the SQL CAT, download the stuff and try it.