Eu tenho um servidor de banco de dados bastante ocupado executando o SQL Server 2008 R2 que possui a seguinte configuração:
- SATA RAID 1 (2 unidades) - SO / Programas
- SAS RAID 10 (4 unidades) - arquivos de banco de dados SQL (dados e logs)
- SAS RAID 1 (2 unidades) - TempDB (dados e logs)
Supondo que não posso adicionar unidades adicionais a este servidor, fiz o melhor uso possível da configuração disponível? Ou devo considerar outro esquema aqui em que os logs são isolados dos arquivos de dados, por exemplo?
Atualizar:
Para aqueles que solicitaram mais detalhes de hardware:
- As unidades SATA (usadas para a partição OS / Programa) são: WD 7200 RPM 3 Gb / s SATA de 3,5 polegadas
- As unidades SAS usadas nas outras matrizes são: Seagate 15K RPM 6 Gb / s SAS de 3,5 polegadas
- O controlador RAID usado é uma: porta LSI 9260-8i SAS / SATA 6 Gb 8
Atualização 2:
Com base nos comentários que recebi, parece que tenho as seguintes opções viáveis para escolher - concederei a recompensa a alguém que possa me dizer qual provavelmente será o melhor no ambiente que descrevi:
- Deixe tudo como está - provavelmente não vou me sair muito melhor
- Mova minhas 2 unidades RAID 1 SAS para minha matriz RAID 10 existente para que ela seja composta por 6 discos no total
- Mova meus arquivos de log para o SAS RAID 1 e / ou mude o TempDB (dados ou logs) de volta para o RAID 10
sql-server
hardware
DanP
fonte
fonte
Respostas:
Variantes desta pergunta surgem semi-regularmente:
Há também brigas ocasionais sobre a "melhor prática" de separação de dados / log.
Sem uma análise mais detalhada do que este servidor está fazendo, o mesmo conselho se aplica como fornecido anteriormente.
Raramente existe um ponto em uma divisão com tão poucos eixos disponíveis. Uma única matriz com uma capacidade maior de IOPs normalmente absorve os altos e baixos da sua carga de trabalho melhor do que duas matrizes menores.
Uma variante que pode valer a pena testar é colocar o tempdb na unidade do SO. Faça isso apenas se você tiver uma carga de trabalho representativa que possa ser reproduzida repetidamente, para garantir uma comparação justa da configuração. Se você optar por esse arranjo na produção, verifique se o crescimento do tempdb é restrito, para não consumir inadvertidamente todo o espaço livre na unidade do SO.
Dado que suas unidades de sistema operacional são montanhas-russas de 7200 RPM, ficaria surpreso se o tempdb na configuração da unidade de sistema operacional tivesse algum benefício.
fonte
Tudo depende da sua carga de trabalho, mas com apenas 6 unidades, limita suas opções. Se sua carga de trabalho não depende muito do tempdb para itens como classificações, tabelas de hash e isolamento de instantâneo, é melhor usar as 6 unidades SAS juntas no RAID 10. No entanto, se você conhece ou possui as métricas para provar isso, tempdb é muito utilizado, então você deve mantê-lo separado como você o fez.
fonte
Depende muito do que você quer dizer com "muito ocupado": diferentes padrões de carga de trabalho (gravação pesada ou não, operações em massa comuns ou não, nível de acesso simultâneo, para citar apenas três das muitas variáveis) podem ter um efeito drástico no desempenho de qualquer disposição de eixo.
Para uma situação de gravação pesada, a separação dos logs dos dados pode fazer uma diferença significativa, pois cada gravação envolve a atualização dos arquivos de log e de dados, o que implica uma quantidade considerável de inversão de cabeça se os dois conjuntos de arquivos estiverem no mesmo conjunto de eixos. .
Sem referência adicional à sua carga de trabalho (e às especificações dessas unidades e de qualquer controlador que esteja entre elas e a máquina), eu estaria inclinado a usar três volumes: um para programas do OS + e tempdb (dados), um para o banco de dados principal dados e o terceiro para logs (tempdb e DBs principais).
Obviamente, se suas cargas de trabalho são muito leves nas operações de gravação, você não deve gastar muito tempo se preocupando em manter os dados e os logs separados, pois isso fará pouca diferença no desempenho e dedicar um volume inteiro a elas seria um grande desperdício de informações disponíveis. espaço.
fonte
A resposta real depende das suas necessidades, mas geralmente "colocar dados e efetuar logon em diferentes matrizes" é de maior importância do que "colocar tempdb em sua própria matriz".
Dado o número de unidades disponíveis, meu ponto de partida seria:
O que você deve fazer é usar o SQLIO para testar o desempenho de diferentes configurações de unidades.
fonte
Dependendo do que você está usando o banco de dados (OLTP x armazenamento), sua configuração parece uma boa configuração geral. Se você tivesse mais discos, teria mais opções.
Você poderia obter um desempenho melhor se alternasse o disco do TempDB para RAID 0 (faixa). Isso aumenta seu risco de falha, mas como o TempDB armazena apenas os dados em buffer, você não pode sofrer perda de dados. Portanto, a maioria das pessoas considera isso uma troca razoável. Basta manter um sobressalente por perto (ou um hot-spare).
Uma coisa que você não mencionou, mas pode tentar (se ainda não o fez): a Microsoft recomenda dividir o TempDB em vários arquivos (um por CPU). Obviamente, é melhor que eles estejam em discos separados, mas simplesmente ter arquivos separados ajuda. http://msdn.microsoft.com/en-us/library/ms175527(v=SQL.105).aspx
fonte