ti-enxame.com

Como otimizar o desempenho dos bancos de dados do MSSQL?

Eu sou um DBA com um banco de dados com ~ 280 tabelas e total de dados de ~ 1,5GB. Eu gostaria de sintonizar o banco de dados para torná-lo melhor.

O que você faz para manter seu desempenho de bancos de dados SQL? Quantos mexidados com índices, estatísticas e desfragmentação você faz?

Quais são os maiores assassinosos/melhorias de desempenho e como você soluciona para descobrir onde otimizar?

Edit : Este é um banco de dados de um sistema de CRM de terceiros, então não tenho controle sobre o código. Eles adicionaram muitos índices (em locais sensatos), mas eu gostaria de saber como posso manter a velocidade do servidor.

Eu corro todas as noites

EXEC sp_MSforeachtable "dbcc dbreindex('?', '', 90)"

para reconstruir índices e (esperançosamente) atualizar estatísticas, usando um plano de manutenção. O mesmo plano também executa uma "tarefa de banco de dados encolhida".

Quais outras tarefas de manutenção noturna/semanal, ou otimizações únicas podem ser feitas?

Edit 2 :

Dicas reunidas:

  • Não execute "Tarefa de banco de dados encolhida"
  • Desativar a propriedade "Auto Shrink"
  • Executar "Exec SP_MSFOREACHTE" DBCC DBREINEX ('?' '' ', 90) "
  • Então corra "Exec sp_updatestats"
6
Frode Lillerud

você deve remover a parte "Database Shrink" do seu plano de manutenção. "Database Shrink" fragmentará seu índice! aqui é uma grande postagem do blog por Paul S. Randal, que explica isso em detalhes.

você pode reconstruir suas estatísticas com:

EXEC sp_updatestats

atualize suas estatísticas Sempre depois do seu banco de dados Reindex. aqui é um post de blog por Colin Stasiuk, que explica essa melhor prática.

10
quentin

Eu recebi ordens de melhoria de desempenho de magnitude apenas pela indexação (embora eu realmente não mexa muito com isso)

Depois de lidar com o óbvio (hardware decente, indexação e desfragmentação), você é a melhor fonte de desempenho é olhar para o seu próprio código.

8
Dani

Certifique-se de que seu servidor SQL não esteja fazendo nada além de servir SQL, sem compartilhamentos de arquivos, sem servidores da Web. Um banco de dados que tamanho não deve ter nenhum problema de desempenho, a execução do Profiler ajudará a zerar em quaisquer pontos lentos.

Certifique-se de pré-alocar espaço suficiente para que o banco de dados não esteja crescendo automaticamente o tempo todo.

5
SqlACID

Coloque seus arquivos de banco de dados principais em diferentes discos físicos do que seus arquivos de log. ou seja - separe seu .MDF e seu .LDF arquivos.

2
Nathan DeWitt

se você tiver SP2 do SQL2005, você pode (e, como você é um dba provavelmente já fez) instalar o plug-in do relatório do Dashboard de desempenho. Depois de reiniciar o servidor, verei o monitor de desempenho para índices úteis. O monitor de desempenho fornece uma riqueza de informações. Com o tempo, descobri que se acumula muito material (mas isso pode ser porque eu tenho uma configuração de banco de dados como fogbugz ... Eu tenho muitos bancos de dados de clientes, todos com a mesma estrutura, no mesmo servidor ... SQL Server irá tratar os índices necessários em cada um deles como separado e que leva a um monte de entradas efetivamente duplicadas no relatório). De qualquer forma, gasto muito tempo olhando para os relatórios de índice ausentes e adicionando/modificando índices como resultado.

atenciosamente, Don

2
Don Dickinson

Todas as correções de hardware desculpe, mas eu sugiro usar;

64 bits janelas 2008 muita memória (16GB ou então eu sugiro, é barato no momento) Logs em um SSD, dados em um par espelhado de 15krpm SCSI/SAS discos, idealmente um par de chips Xeon 55xx-series.

Isso vai custar dinheiro obviamente, mas garantirá um desempenho significativo aumenta rapidamente - você pode tornar seu db melhor, mas isso leva tempo (que custa também, é claro) e não é garantido para torná-lo mais rápido.

1
Chopper3

Teste Execute seus processos SQL/armazenados no SQL Management Studio. Quando você executa, ligue o Plano de Execução e as Estatísticas do Cliente. Procure por digitalizações de mesa ou outras etapas que usem ocupam grandes% do tempo de execução. Se você estiver executando o SQL 2008, sugerirá índices que farão seu código correr mais rápido.

1
Chris Porter