Usando dois grupos de arquivos em um RAID 10

1

Se um servidor Microsoft SQL Server 2008 Standard Edition estiver configurado como abaixo, a opção 1 oferece uma vantagem sobre a opção 2?

Configuração básica:

  • 32 GB de RAM
  • 2 x Xeon 7460 (6 núcleos)
  • Windows Server 2008 Standard SP2
  • Microsoft SQL Server 2008 Standard SP1
  • 2 x disco rígido de 15 GB RPM de 146 K em RAID 1 (para sistema operacional)
  • 2 x disco rígido de 15 GB RPM de 150 K em RAID 1 (para registros)
  • 4 x disco rígido de 15 GB RPM de 146 GB em RAID 10 (para dados)

Opção 1:

Configure um disco virtual no RAID 10 e use um grupo de arquivos

Opção 2

Configure dois discos virtuais no RAID 10 e use dois grupos de arquivos

O senso comum me diz que não haveria vantagem de velocidade, já que o RAID 10 ainda é capaz de ler / gravar na mesma velocidade.

Alguém pode aconselhar se o bom senso prevalece ou se há uma razão pela qual eu negligenciei por que isso seria vantajoso?

    
por PCurd 26.08.2009 / 15:55

6 respostas

2

Não tenho certeza se há um aprimoramento de desempenho para vários grupos de arquivos, mas você pode descobrir que vários arquivos no grupo de arquivos melhorarão o desempenho.

Revise minha contribuição para esta pergunta: Por que O uso da CPU é tão assimétrico em nossa caixa do SQL Server de 8 cpu?

Temos o cuidado de configurar nossas maiores tabelas usadas com mais freqüência para estar em grupos de arquivos com vários arquivos neles. 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:

link

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.

    
por 26.08.2009 / 18:14
1

Os únicos benefícios que você obteria seriam que o sistema operacional teria duas filas de disco físico no Windows em vez de uma, e que você estaria pronto para adicionar outro array e mover um arquivo de banco de dados para ele no futuro. Ambos são muito pequenos benefícios.

    
por 26.08.2009 / 16:18
0

Se você tiver tempo, pode sempre tentar & veja em vez de adivinhar!

Não vejo nenhum ganho de desempenho percebido com dois discos virtuais em um disco virtual, mas ter arquivos e grupos de arquivos adicionais sempre é bom para provas futuras.

Ter seus índices em um grupo de arquivos separado é uma boa prática, então você sempre pode mover o grupo de arquivos para um novo conjunto de eixos para um aumento de desempenho extra!

    
por 26.08.2009 / 16:12
0

Não haverá nenhuma vantagem de velocidade mensurável, mas, como apontado por outros, ter dois grupos de arquivos é um conceito à prova do futuro.

    
por 26.08.2009 / 17:24
0

Sua opção two não oferece nenhum benefício, já que o I / O será espalhado por todos os discos físicos nas duas configurações.

Se você tem 4 discos físicos e realmente deseja obter o máximo desempenho possível deles (*), veja como fazer isso:

  • Crie dois arrays RAID 1, cada um usando dois discos.
  • Crie um único volume em cada matriz.
  • Crie um grupo de arquivos em cada volume.
  • Otimize seu banco de dados para o máximo de paralelismo.

O último ponto é o mais importante; com essa configuração, você pode ter os dois grupos de arquivos trabalhando em paralelo, mas isso só é útil se você puder colocar seus dados de uma maneira que permita fazer I / O em ambos ao mesmo tempo; então você poderia colocar diferentes tabelas em diferentes grupos de arquivos, ou usar um deles para tabelas e o outro para índices, ou ... você tem soluções infinitas, tudo depende da sua carga de trabalho real.

(*) Esta é realmente uma otimização avançada, na maioria dos casos é apenas um exagero, já que um único grupo de arquivos / único volume / array único será muito mais simples de gerenciar e alcançará desempenho muito similar, a menos que você realmente pode paralelizar sua E / S.

    
por 31.08.2009 / 23:10
0

A opção 2 provavelmente resultará em mais movimento físico dos cabeçotes da unidade, já que eles precisam alternar entre os dois discos lógicos. Isso pode ou não compensar quaisquer vantagens obtidas por filas de discos separadas. Somente testes usando seu ambiente podem fornecer resultados conclusivos.

    
por 31.08.2009 / 23:44