Estivemos em um servidor dedicado (quad-core único, 6 GB de RAM) e estamos migrando para um novo servidor dedicado (2x hex-core, 32 GB de RAM). Ambos são o Windows Server 2008, o SQL Server 2008. O desempenho no novo servidor é um pouco pior que o antigo e mais lento.
Nos testes, nosso aplicativo ASP.NET fica 10 a 20% mais lento. A execução de consultas caras individuais com STATISTICS IO e STATISTICS TIME mostra um tempo decorrido 10 a 20% maior no novo servidor. O SQL Query Profile mostra maior uso da CPU em consultas caras.
O Gerenciador de tarefas no novo servidor mostra que o sqlserver.exe está consumindo 22 GB de RAM, mas os valores da CPU sempre permanecem muito baixos.
Atualizei todas as estatísticas, índices reconstruídos ou reorganizados, etc. Os planos de execução devem ser armazenados no novo servidor neste momento, dada a quantidade de testes que fiz. Se houver algum índice ausente (acho que não), eles afetarão igualmente os servidores antigos e novos. Novo possui um backup restaurado dos mesmos dados no antigo.
Eu esperava que o desempenho no novo servidor fosse melhor, mas mais preocupante é a carga. Se o servidor antigo tiver um desempenho melhor, mesmo sob carga, o que acontecerá quando esse novo servidor, um pouco pior, tiver que suportar essa carga?
O que mais eu poderia estar perdendo aqui?
EDIT: MAXDOP definido como 6.
O servidor antigo possui SO, bancos de dados e tempdb nas mesmas unidades físicas (RAID 10). Total de 4 15k 3 Gb / s SAS de 3,5 polegadas. O novo servidor possui três conjuntos de unidades: SO no RAID 1, banco de dados no RAID 10, tempdb no RAID 5. Total de 9 SAS de 15K 6 Gb / s de 2,5 polegadas.
O servidor antigo possui 1 x Intel Xeon E5620 de 2,40 GHz e quatro núcleos 8 threads (w H / T). O novo servidor possui 2 x Intel Xeon E5-2640 de 2,5 GHz e seis threads de 12 núcleos (w / T).
EDIT 2: Aqui está a análise final:
O plano de energia estava em desempenho equilibrado, não alto. Mudou isso.
O Tempdb estava em um RAID 5, não no RAID 10. Adicionado outro HD para criar duas configurações RAID 10 fisicamente distintas, uma para tempdb e outra para todo o resto.
Arquivos relacionados ao SQL excluídos (mdf, ldf, ndf, bak) da verificação de vírus.
Reconstruiu todos os índices após a mudança para o novo servidor. Eles estavam muito fragmentados - possivelmente como resultado de backup, cópia, restauração?
E percebi que o salto do processador não era tão grande. As consultas não serão executadas muito mais rapidamente, mas com mais processadores, mais núcleos, mais RAM, seremos mais escaláveis.
fonte
Respostas:
O Raid 5 é mais lento que o 10, especialmente para cargas de trabalho com muita gravação. Como tal, geralmente não é recomendado para o servidor SQL e certamente não para o tempdb. Isso por si só poderia explicar facilmente a diferença de desempenho.
Minha recomendação seria mover o tempdb para o raid 10.
fonte
Este é um problema muito geral, por isso é difícil dar conselhos específicos. Mas, se eu estivesse nessa situação, começaria do básico, verificaria as consultas mais caras. Que funcionalidade está demorando mais? O que está consumindo mais tempo do que você executa consultas com o tempo de estatísticas? Depois de restringir um pouco o foco, você pode comparar as coisas com o servidor antigo. Além disso, é preciso verificar se os dois servidores estão no mesmo nível de patch (SQL e Windows).
fonte
Bem, você não diz nada sobre seus discos rígidos e o número de arquivos tempdb que possui. Há uma recomendação geral de que nr de tempdbs = número de núcleos até 32; também há uma opção a ser executada para garantir que os temp dbs sejam usados igualmente.
No entanto, em profundidade: http://www.sqlskills.com/BLOGS/PAUL/post/A-SQL-Server-DBA-myth-a-day-%281230%29-tempdb-should-always-have-one-data- file-per-processor-core.aspx também alterou o empacotamento de tabelas e índices durante a migração? O backup e a restauração podem terminar com um preenchimento diferente nos índices (incluindo os agrupados)
fonte