Qui Suis-je ?

My photo
Lyon, France
47, married, 3 marvellous kids. IT Director for the last 15 years for a large multinational company. I believe in coaching, in professional life as well as in private and sports.

Monday 23 November 2009

SQL Server virtualization : is it a good idea ?

You can read all kinds of articles on the Net whether it's good or not to virtualize an SQL server. In this jungle, it proves quite challenging to find a pragmatic way of making a concious decision. After spending some time on this subject, I can now propose a kind of decison tree to drive you to an opinion with little chance of getting wrong. Before jumping to the conclusion, please note that this is working only assuming the following :
  • You know what you're about to do : Do not get too much influenced about what you find on net forums and check the obsolescence of the articles : many of them are dated before Microsoft actually supported SQL on any virtual platform. Bear in mind also that latest versions of virtualization solutions have improved significantly over the past few months.
  • Your virtualization platform is mature and well supported by skilled administrators
  • Your SQL version is supported on virtual environment by Microsoft : see MS KB article http://support.microsoft.com/kb/956893 to know which virtual environment are supported.
  • Your SQL application is clean and supported by skilled DBAs
If any of the above bullets are not checked positively, please forget about virtualizing your SQL server and do the right things first and in the right order.

Now next questions to ask yourself are :
  • Is my current SQL (physical server) providing the right level of performance, and do I risk to degrade this performance ?
  • Is my current SQL (physical server) providing the right level of reliability, and do I risk to degrade this reliability.
Please note these two questions should be answered from an end-user or business perspective. If you get two 'YES' to these questions, then the only reason why you would still want to virtualize is if it would bring a significant operational benefit (cost savings or operational tasks savings), such as these benefits would override the risk. This is a business decision, not a technical one.

After this step, if you still think it's a good idea (which might very well be !) , please consider the following :
  • Do you have a REAL good idea of the performance of your existing platform ? You need to know the number of IOs, disk throughput during stress periods, real CPU usage. This parameters are easy to assess now on a physical environment, and will be more cumbersome afer virtualization as CPU, Disks, HBAs, might be shared with other virtual machines. See VMWare white paper regading their view about performance : http://www.vmware.com/files/pdf/perf_vsphere_sql_scalability.pdf.
  • Have you already optimized your SQL instance ? By puttings logs on a different disk that the database itself for example. Ok it's a basic, but this basic will also apply on your virtual LUNs.
  • Is your existing physical platform already making extensive use of a SAN and load balancing HBAs ? If yes, it's unlikely that you will obtain a higher performance after virtualizing.
So the conclusion is that the decision is obviously case dependant. There is no black and white in this matter, and the more you know about your existing virtual platform, the easiest the decision is.

This quick guide was inspired by both my own experience and a very good article with pro's and con's from Brent Ozar, which you can read at http://www.brentozar.com/archive/2009/03/why-would-you-virtualize-sql-server/

No comments:

Post a Comment

Vos commentaires sont toujours les bienvenus s'ils sont constructifs !