Layout MS SQL para melhor desempenho

Layout MS SQL para melhor desempenho

Adquirimos um novo servidor para atuar como back-end do MS SQL. Estou curioso para saber qual seria a melhor configuração para isso.

O servidor é um Dell R710 e possui 6 discos rígidos 2x 74GB 15k e 4x 146GB 15k

Atualmente, isso está configurado em uma configuração RAID 1/Raid10.

Minha pergunta é onde (qual array) o seguinte deve ir?

TEMPDBs (também quantos, tamanho e crescimento) Bancos de dados do sistema (mestre, modelo, etc) Aplicativo MDFs Aplicativo LDFs Arquivo de página do sistema

O sistema operacional já está instalado no RAID1.

Responder1

Eu colocaria o sistema operacional, o arquivo de paginação e o (s) LDF (s) na matriz RAID1. Todo o resto na matriz RAID10.

Se você não estiver usando o Windows 2008, certifique-se de que suas partições estejam alinhadas corretamente:

http://msdn.microsoft.com/en-us/library/dd758814.aspx

Como já explicado, adicione 1 arquivo TEMPDB por núcleo da CPU - torne-os todos do mesmo tamanho.

Dimensione seus arquivos de log adequadamente e crie-os em uma única etapa.

Considere fazer backup de seus bancos de dados em um servidor diferente por meio de um compartilhamento de rede, se possível - para mitigar o risco de seu array falhar completamente e levar seu banco de dados e backups com ele.

Responder2

TempDB

Fiz algumas pesquisas há algum tempo sobre otimização de tempdb e respondi por conta própriapergunta no Stackoverflow. Aqui está o que descobri.

Para otimizar o desempenho do tempdb, preste atenção à configuração do disco físico, à configuração do arquivo, bem como a algumas configurações do banco de dados.

Configuração do disco físico

tempdb deve residir em seupróprios discos físicos dedicados. Isso permite dividir as transações de E/S do restante dos volumes no SQL Server.

Para mover tempdb para uma nova unidade de disco, use ALTER DATABASE. É o comando T-SQL chave para realizar esta operação. A Microsoft oferece um bom exemplo nos Manuais Online do SQL Server 2005. O nome do artigo é ALTER DATABASE (Transact-SQL) e a seção específica é'G. Movendo tempdb para um novo local.'

O tempdb é um banco de dados com gravação muito alta. Portanto, um array RAID 5 não é o local adequado para isso. Você deveria colocar o tempdbem um array RAID 1 ou RAID 10pois são otimizados para aplicativos de alta gravação. Se você puder pagar matrizes RAID 1 ou RAID 10 adicionais para cada arquivo de banco de dados físico do tempdb, obterá melhor desempenho.

Arquivos de banco de dados

Você devia terum arquivo físico por núcleo de CPU no servidor. Portanto, se você tiver um servidor dual-chip e dual-core, deverá ter quatro arquivos de banco de dados físicos para o banco de dados tempdb. Ao adicionar mais arquivos de banco de dados, é importante configurar os arquivos nomesmo tamanho inicial e com as mesmas configurações de crescimento. Dessa forma, o SQL Server gravará os dados nos arquivos da maneira mais uniforme possível.

Tamanho do arquivo do banco de dados

O tamanho do banco de dados tempdb pode afetar o desempenho de um sistema. Por exemplo, se o tamanho definido para tempdb for muito pequeno, parte da carga de processamento do sistema poderá serocupado com o crescimento automático do tempdb para o tamanho necessário para suportar a carga de trabalho sempre que você reiniciar a instância do SQL Server. Você pode evitar essa sobrecarga aumentando os tamanhos dos dados tempdb e do arquivo de log.

Determinar o tamanho apropriado para tempdb em um ambiente de produção depende de muitos fatores, incluindo a carga de trabalho existente e os recursos do SQL Server usados. A Microsoft recomenda que você analise a carga de trabalho existente executando as seguintes tarefas em um SQL Servertesteambiente:

  1. Ative o crescimento automático para tempdb(em um ambiente de teste!).
  2. Execute consultas individuais ou arquivos de rastreamento de carga de trabalho e monitore o uso do espaço tempdb.
  3. Execute operações de manutenção de índice, como reconstrução de índices e monitore o espaço tempdb.
  4. Use os valores de uso de espaço das etapas anteriores para prever o uso total da carga de trabalho; ajuste esse valor para a atividade simultânea projetada e defina o tamanho do tempdb adequadamente.

As recomendações de tamanho mínimo para tempdb são as seguintes:

  Ambiente. Tamanho Tamanho do banco de dados (MB) Tamanho do log (MB)
  ----------- ------------ -----------
  Pequeno 1024 256
  Médio 5120 1024
  Grande 10024 2048

Configurações do banco de dados

Você pode aumentar ainda mais o desempenho do tempdbdesabilitando as estatísticas de atualização automática, o que poupará algum trabalho ao seu tempdb. Você também pode definir oopção de criação automática de estatísticas para falso.

Isenção de responsabilidade: as configurações devem ser alteradas com cuidado. Dependendo do tipo de carga colocada no tempdb, a alteração das configurações pode afetar negativamente o desempenho do sistema.

Para obter o desempenho ideal do tempdb, siga as diretrizes e recomendações fornecidas emOtimizando o desempenho do tempdb.

Como monitorar o uso do tempdb?

Correndosem espaço em disco no tempdbpodecausar perturbações significativasno ambiente de produção do SQL Server e pode impedir que aplicativos em execução concluam operações.

É possível usar a sys.dm_db_file_space_usagevisualização de gerenciamento dinâmico para monitorar o espaço em disco usado por esses recursos nos arquivos tempdb. Além disso, para monitorar a atividade de alocação ou desalocação de páginas no tempdb no nível da sessão ou da tarefa, você pode usar as visualizações de gerenciamento dinâmico sys.dm_db_session_space_usagee .sys.dm_db_task_space_usage

Essas visualizações podem ser usadas para identificar consultas grandes, tabelas temporárias ou variáveis ​​de tabela que usam muito espaço em disco tempdb. Existem também vários contadores que podem ser usados ​​para monitorar o espaço livre disponível no tempdb e também os recursos que estão usando o tempdb.

Links:

Responder3

A resposta genérica fácil é que qualquer coisa que envolva alto IO deve ir para o grupo de discos RAID 10. Você também decidiu sua estratégia de partição ou essa parte da questão?

Então, em seu primeiro grupo de discos, eu provavelmente criaria uma única partição (cerca de 70 GB utilizáveis). Colocaria o sistema operacional e o aplicativo MSSQL nela.

No segundo eu criaria as seguintes partições

1) partição para arquivo de paginação (dependendo da quantidade de memória que você tem, mas cerca de 10-20 GB 2) partição para arquivos de log de transações 100 GB 3) partição para arquivos de dados 100 GB

Isso deixará cerca de 50 GB de sobra que eu deixaria não atribuídos para que você possa aumentar a partição de log ou de dados conforme seus requisitos mudam.

Curiosamente, atualmente estou trabalhando na mesma máquina com especificações, mas estou usando Linux e Oracle. Você sou do universo paralelo?

James

Responder4

Desculpe, fiz esta pergunta como um usuário não registrado e agora não consigo marcá-la como respondida. Estou aguardando o retorno dos administradores para ver se eles podem anexar minha conta à pergunta novamente.

Para dar mais informações, este servidor não estará sob grande carga; na verdade, é um back-end de controle de origem. Comprar um servidor e um DAS ou ISCSI SAN ou algo assim seria exagero e o custo teria destruído as chances do projeto. Eu trabalho para uma pequena e média empresa com cerca de 100 pessoas, então nosso orçamento de TI está apertado, especialmente no momento.

@mrdenny

Fizemos a pergunta ao fornecedor do software que recomendou essa configuração. Nós o compramos então, quando fizemos a missão que perguntei aqui, eles disseram para colocar log, bancos de dados e tempdbs, todos na partição raid 10. Eu não sou um grande cara de banco de dados (sério ??), mas isso parecia suspeito, já que quase todo mundo sabe que não deve misturar seus ldfs e mdfs nos mesmos eixos.

@splattne - Obrigado pela visão sobre tempdb, isso será útil para esta e futuras instalações de SQL.

@SuperCoolMoss - conversei com algumas pessoas em minha própria rede de TI e elas concordam com você nisso. SO, arquivo de paginação e LDFs em RAID1 e tempdb e MDFs em RAID10

Obrigado a todos que comentaram.

Pela minha leitura, essas são as regras básicas que acho que você deve seguir ao implantar SQL quando se trata de discos. Na minha opinião eles deveriam ser seguidos nesta ordem, deixe-me saber se você concorda ou discorda.

  1. Use discos redundantes (bastante óbvio)
  2. Use discos rápidos (SCSI/SAS, 15k se possível)
  3. Separe seus arquivos ldf e mdf em fusos diferentes
  4. Não use RAID5 para ldfs ou tempdbs (use RAID10 ou RAID1)
  5. Coloque seu tempdb nos fusos mais rápidos; se possível, separe os tempdbs dos fusos LDF e MDF.

Sinta-se à vontade para compartilhar sua versão modificada desta lista.

informação relacionada