Como seus arquivos / grupos de arquivos são configurados?
Vou plagiar eu mesmo :
Mais uma ideia sobre IO: tivemos o cuidado de configurar nossas maiores tabelas mais usadas para estar em grupos de arquivos com vários arquivos. Um dos aprimoramentos de desempenho disso é que o SQL enviará solicitações para cada arquivo no grupo de arquivos - portanto, se BigOverUsedTable estiver em FileGroup1 e FileGroup1 tiver quatro arquivos nele e seu banco de dados tiver 8 núcleos, ele usará quatro núcleos para fazer "select" grande número esmagando consulta desagradável de BigOverUsedTable "- ao contrário, ele usará apenas uma CPU. Nós temos essa idéia neste artigo do MSDN:
Do TFA:
"Grupos de arquivos usam threads paralelos para melhorar o acesso aos dados. Quando uma tabela é acessada sequencialmente, o sistema cria um thread separado para cada arquivo em paralelo. Quando o sistema executa uma varredura de tabela para uma tabela em um grupo de arquivos com quatro arquivos, usa quatro segmentos separados para ler os dados em paralelo. Em geral, usar vários arquivos em discos separados melhora o desempenho. Muitos arquivos em um grupo de arquivos podem causar muitos encadeamentos paralelos e criar gargalos. "
Temos quatro arquivos em nosso grupo de arquivos em uma máquina de 8 núcleos devido a esse conselho. Está funcionando bem.
Edit: isso tem outra (possivelmente) melhor resposta agora. Os gráficos estavam fora de escala - se você olhar de perto, cada processador está na verdade com cerca de 20% de carga conforme os uzbones apontam.
Editar: Podemos realmente dizer que o uso de vários grupos de arquivos ajuda, porque não colocamos todas as nossas tabelas no grupo de arquivos com quatro arquivos. Grandes consultas no grupo de arquivos "arquivo único" usam apenas uma CPU, mas as consultas na tabela no grupo de arquivos de quatro arquivos atingem 4 CPUs.