29/01/2010 | Autor: Igor Abade V. Leite | Categoria: Técnico | Comentários

Obtenha o melhor desempenho do seu SQL Server virtualizado

É uma prática comum entre nossos clientes virtualizar seus servidores Team Foundation. Tipicamente isso se dá das seguintes formas:

  • Virtualização apenas do AT (application tier). Nesse caso, o SQL Server é mantido fora da máquina virtual;
  • Virtualização apenas do DT (data tier). Menos comum, é possível manter o TFS na máquina física e o SQL Server na máquina virtual;
  • Virtualização do AT e DT. Nesse caso, tanto o TFS quanto o SQL Server vão para dentro de máquinas virtuais. Eles podem compartilhar a mesma máquina virtual ou até serem instalados em máquinas virtuais diferentes.

O grande desafio da virtualização é quando o cliente decide hospedar o SQL Server numa máquina virtual. Extrair o melhor desempenho possível do servidor de banco de dados num ambiente virtualizado não é tarefa trivial. Por isso, quero compartilhar com vocês um artigo extremament útil, com dicas e truques para otimizar o SQL Server em ambiente virtualizado:

**Running SQL Server 2008 in a Hyper-V Environment - Best Practices and Performance Recommendations
**http://sqlcat.com/whitepapers/archive/2008/10/03/running-sql-server-2008-in-a-hyper-v-environment-best-practices-and-performance-recommendations.aspx

UPDATE: Parece que o SQL Server não gosta muito de snapshots – um dos principais benefícios da virtualização. O problema do SQL Server com snapshots (seja no Hyper-V ou qualquer outra tecnologia de virtualização) pode ser resumido nos dois pontos abaixo:

  1. Vinculação de um banco de dados com dados externos onde, ao restaurar um pedaço de um snapshot poderia resultar em inconsistência global do sistema. Eu entendo isso, mas este problema parece ser mais uma questão de diretrizes operacionais (ex.: não usar replicação em servidores virtualizados). As pessoas deveriam poder utilizar tranquilamente os snapshots, evitando esses tipos de problemas de sincronização externa.
  2. Alguns problemas em torno de consistência transacional dos logs de transação com snapshots tirados em momentos arbitrários. Se você sempre tirar o snapshot quando a VM está “desligada”, não há problema - mas o time de SQL Server parece estar preocupado com a corrupção do banco de dados se a VM estiver funcionando. Eu não compreendo perfeitamente isso, porque eu pensei que snapshots fossem gravações de altíssima fidelidade, mas eles parecem sentir que poderia haver alguns problemas.

Em suma: Se for usar snapshot, faça-o apenas com as VMs desligadas.

Technorati Tags: VSTS,TFS,Team System,SQL Server,Hyper-V