Configuração recomendada de disco / partição para um SQL Server

14

Estou procurando alguns conselhos sobre a melhor maneira de configurar meus discos / partições para o SQL Server. Aqui estão algumas das minhas principais preocupações:

Como os arquivos SQL devem ser separados (arquivos de dados, logs, temp)?

É melhor RAID para muitos HDDs e particionar o espaço ou fazer múltiplos RAIDs com menos discos para cada RAID?

Os dados e os arquivos de log devem estar em um tipo de RAID diferente?

Os bancos de dados padrão (mestre, msdb, etc ...) devem estar localizados no C: ou devem estar no mesmo lugar que os outros arquivos de dados / log?

    
por Sean Howat 04.06.2009 / 19:21

4 respostas

14

Aqui está uma boa postagem no blog: link

Documento técnico sobre alinhamento de discos: link

Em resumo, seu sistema operacional deve estar no RAID 1, seus arquivos de dados no RAID 10 (de preferência) e arquivos de log no RAID 1.

Artigo de desempenho do SQL: link

PDF nas 10 melhores dicas de desempenho: link

Lembre-se também de colocar seu TEMPDB em um disco separado por motivos de desempenho. Tenho certeza de que Paul Randal vai entrar aqui e explodir sua mente com o porquê daqui a pouco.

MS diz por que para tempdb: link

    
por 04.06.2009 / 19:29
11

Esta é uma grande questão "depende".

Eu não posso responder a pergunta sobre como criar a pergunta sobre matrizes RAID individuais, pois não sou especialista em armazenamento, mas posso ajudá-lo com o resto.

A primeira coisa que você precisa considerar é qual é a carga de trabalho nos vários bancos de dados - OLTP (leitura / gravação) ou DSS / DW (leitura principalmente). Para cargas de trabalho de leitura / gravação, você deve estar olhando para RAID 1 ou RAID 10 (RAID 1 + 0), pois eles fornecem redundância e excelente desempenho de leitura / gravação. Para cargas de trabalho de leitura maior, você pode usar o RAID 5. O motivo pelo qual o RAID 5 não deve ser usado para cargas de trabalho de leitura / gravação é que você paga uma penalidade de desempenho nas gravações.

Os logs de transações, por sua própria natureza, são de leitura / gravação (ou gravação, dependendo se você está usando o log de transação para qualquer coisa - por exemplo, backups ou replicação de log) e nunca devem ser colocados no RAID 5. / p>

Isso significa que, para alguns bancos de dados e cargas de trabalho, você pode ter arquivos de dados no RAID 5 e arquivos de log no RAID 1/10, e para outros bancos de dados, você pode ter tudo no RAID 1/10. Indo mais longe, se você tiver um banco de dados particionado, ele pode conter alguns dados de leitura e alguns dados de leitura / gravação, possivelmente dentro da mesma tabela. Isso poderia ser dividido em grupos de arquivos separados e, em seguida, cada grupo de arquivos colocado em um nível de RAID apropriado.

A separação dos bancos de dados reais depende novamente da carga de trabalho e dos recursos do subsistema IO subjacente - um grau maior de separação pode ser necessário para armazenar itens em matrizes RAID individuais do que em uma SAN, por exemplo.

O Tempdb é um caso especial por si só, já que é geralmente um banco de dados altamente carregado e deve ser armazenado separado dos outros bancos de dados. Os bancos de dados do sistema não devem ser muito usados e podem ser colocados em qualquer lugar, desde que haja redundância.

Aqui está um link para um white paper que eu ajudei a escrever que deve ajudá-lo: Projeto de armazenamento de banco de dados físico . Verifique também se o subsistema de IO pode lidar com a carga de trabalho prevista - consulte este informe oficial: Práticas recomendadas de E / S de pré-implantação . Finalmente, certifique-se de usar o tamanho correto da faixa RAID (geralmente 64K ou superior nos sistemas mais novos), o tamanho correto da unidade de alocação NTFS (geralmente 64K) e que em sistemas anteriores ao Windows Server 2008, defina o deslocamento da partição de disco corretamente . Para informações sobre estes, e ponteiros para mais informações sobre eles e por que você deve configurá-los desta forma, veja este post: As suas compensações de partição de disco, tamanhos de faixa RAID e unidades de alocação NTFS estão definidas corretamente? .

Linha Bototm: conheça sua carga de trabalho e seus recursos de subsistema de ES e, em seguida, implemente adequadamente.

Espero que isso seja útil para você.

PS No que diz respeito ao tempdb, existe uma grande quantidade de worms sobre como você deve configurá-lo e há todos os tipos de informações conflitantes. Eu escrevi um post abrangente sobre a configuração do arquivo de dados tempdb em Equívocos em torno do TF 1118 .

    
por 04.06.2009 / 19:38
1

A resposta curta para os servidores que eu configurei sempre foi

Registra discos físicos separados, ataque 1 ou 10 (distribuição + espelhamento)

Banco de dados em discos próprios, dependendo das necessidades de desempenho, geralmente RAID5

Grande quantidade de cache no (s) controlador (es) de ataque

De preferência, coloque novamente o sistema operacional e o arquivo de paginação do Windows em uma matriz separada, geralmente apenas como um espelho (Raid 1). Isso mantém todas as operações de gravação separadas para que o desempenho pesado não arraste tudo.

O que eu experimentei no passado é que ter gravações de banco de dados + gravações de log + gravações de arquivo de paginação sobrecarregarão um array Raid5 e o desempenho irá para o heck em um handbasket. O problema é que seu desempenho será bom em testes, desenvolvimento, etc. Mas, quando você entra em órbita de produção e uso, esse problema parecerá "fora do azul" e as reclamações dos usuários vão disparar.

    
por 04.06.2009 / 20:36
1

Existem caras muito melhores do MSSQL aqui do que eu, mas em termos gerais eu sugiro o seguinte:

SO e código em C: - estes devem ser os discos locais, devem ser um par de matriz RAID1 - usamos discos SAS de 2 x 2,5 polegadas e 146 GB 10krpm para isso, mas você pode usar 2 discos SATA 7,2. Os dados devem estar em um array RAID 1/10, 5/50/6/60 bem rápido (10kpm ou melhor) de qualquer tamanho que você precisar - nós temos o FC SAN LUNs, geralmente em um grupo de disco 'tier 2' / 10krpm . Os logs devem estar em um par de matriz RAID 1 pequeno (10Krpm ou MUITO RÁPIDO) separado - nós mantemos o nosso em FC SAN LUNs, geralmente em um grupo de disco 'tier1' / 15krpm muito pequeno ou em um 'tier0' / grupo ssd.

De qualquer maneira, você quer cada pedaço destes em fusos / matrizes separados para desempenho - é claro que tudo funcionará em um único disco, mas eu acho que você está procurando um equilíbrio de desempenho e custo.

Armazenamos nosso master / tempdb em nossos bancos de dados regulares, mas você pode dividi-lo em um LUN de matriz de dados separado.

Espero que isso ajude.

    
por 04.06.2009 / 20:54