SQL 2012 no Hyper-V. Por que minhas consultas são lentas até eu descartar e criar algum índice espacial?

0

Eu tenho um aplicativo espacial que consulta várias tabelas (camadas) toda vez que o usuário faz panoramização / ampliação do mapa. Quando movi o SQL Server para o Hyper-V, notei que havia vários segundos de atraso ao consultar uma das tabelas. Desativei esta tabela das consultas e depois outra tabela ficou lenta, etc.

Estranhamente, eliminando e criando qualquer índice espacial de qualquer tabela no banco de dados (mesmo que eu não esteja consultando), o desempenho fica magicamente rápido até que eu reinicie ou crie uma nova conexão.

Eu tentei usar um disco de passagem, mas isso não fez nenhuma diferença. Esse "bug" não ocorre no mesmo hardware ao executar o servidor SQL nativo (não virtual). Também experimentei o Hyper-V em um PC diferente e também experimentei o SQL 2014 Express, mas tive o mesmo problema.

Existe alguma outra configuração do Hyper-V / SQL que eu possa experimentar? Existe alguma explicação sobre o motivo da queda e criação de um índice que resolva temporariamente o problema?

    
por Damien 17.05.2014 / 03:41

1 resposta

1

Infelizmente, parece ser o custo da virtualização em alguns cenários. Se você estiver executando com memória dinâmica que usa um driver de balão de memória, tente configurar a VM para ter uma quantidade definida de RAM. Veja a utilização de memória do host e do convidado. Se você perceber que a memória está cada vez mais consumida, tente desabilitar as páginas de bloqueio na memória. Uma coisa que você pode tentar é com todos os convidados desligados e o host recém-inicializado, basta inicializar o único convidado executando o SQL. Se as consultas forem executadas como deveriam, as outras máquinas convidadas estarão roubando essa VM dos recursos necessários. Isso pode acontecer quando um servidor não é dimensionado corretamente e é bastante comum. Uma maneira de contornar isso é adicionar uma matriz adicional de discos e dedicar a apenas essa VM. Outra maneira de enganar o sistema é usar o armazenamento em cache SSD para o banco de dados. Algumas outras coisas a serem consideradas são se você encerrar o serviço SQL e usar uma ferramenta como UltraDefrag e executar uma otimização e desfragmentação completas e, em seguida, reativar o serviço se a consulta tiver um desempenho mais rápido. Você pode obter o UltraDefrag que é opensource e livre no link por último, a Microsoft tem um documento com o qual você pode querer verificar suas configurações. Confira: link

Outra coisa é tentar usar o ESXi em vez do Hyper-V ou o mais recente Hyper-V 2012 R2.

Por fim, com a versão completa do SQL, qual versão exata está sendo executada? Qual sistema operacional exato está sendo executado para o convidado e o host? Você tem os serviços de integração mais recentes instalados?

    
por 15.07.2014 / 17:23