locked
Como medir performance por base de DADOS? Help RRS feed

  • Pergunta

  • Bom dia.

    Ultimamente estou tendo problemas de performance no meu servidor SQL(muito consumo de memoria). Gostaria de saber como medir a performance por base de dados para saber qual delas esta consumindo mais recursos.

    Tenho um servidor com Windows 2003, 2 GB de memoria, SQL 2000 e esta na rede giga aqui na empresa. O SQL esta com 4 banco de dados.

    Poderiam me ajudar a descobrir o pq deste consumo tao alto?

    Obrigado.

     

     

    quinta-feira, 10 de agosto de 2006 14:35

Todas as Respostas

  • Para descobrir vc pode utilizar a ferramenta do SQL Profiler do SQL...Ou pelo perfomance do monitor do Windows...

    Abços,

     

    quinta-feira, 10 de agosto de 2006 14:44
  • na verdade a memoria alocada pelo sql server nao e liberada para o sistema operacional. para fazer esse controle vc. deve usar a alocacao dinamica de memoria, veja pelo enterprise manager->selecione o servidor botao direito do mouse properties na tab memory deve estar estabelecida a faixa inicial e final para o uso de memoria.

     

    Abs;

    quinta-feira, 10 de agosto de 2006 14:50
  •  

    Completando, concordo com Rita eo Marcelo.

    Utilizando o Performance(Desempenho) você pode adicionar algumas contadores que podem ajudar a obter maiores informações sobre o desempenho tanto da sua máquina como também do seu SQL Server.

    Aconselho a utilizar os indicadores para os quatro subsistemas básicos: Placa de Rede, Memória, Disco físico e Processador, bem como os indicadores do SQL Server.

    Outra grande ferramenta que já foi citada é o Profiler, através dele você poderá identificar possíveis gargalos ou pontos de maior processamento das suas transações executadas pelo SQL Server.

    É muito importante tem em mente que a memória hoje em dia é cada vez mais utilizada e importante para o processamento, por isso, verifique o quando de memória esta sendo destinada para o seu SQL Server, as vezes, como o Marcelo disse trabalhar com memória dinamica pode resulter em muito o seu problema.

    Além disso, outro fator, importante para se analisado é as estatísticas do seu banco de dados, as vezes podem existir um nível de fragmentação muito grande nos índices e tabelas.

    Utilize o DBCC Showcontig, DBCC SHOW_STATISTICS, UPDATE STATISTICS, sp_updatestats, entre outros comandos e stored procedures para realizar uma melhor análise.

    Se necessário faça a desfragmentação dos índices, páginas de dados das tabelas e banco de dados, DBCC REINDEX, DBCC DBREINDEX, DBCC INDEXDEFRAG.

    Qualquer dúvida estou a disposição.

    sexta-feira, 11 de agosto de 2006 11:12
    Moderador
  • Olá vimi...

    Com as dicas passadas pelos colegas acredito que vc conseguirá identificar o seu problema. No mais, como vc tem apenas 2GB é fundamental que vc defina um limita máx e mínimo de memória para o SQL Server. Isso porque se vc não definir o SQL pode pegar toda a memória do servidor fazendo com que vc venha a ter problemas no nível de SO.

    Como indicado pelo MArcelo, entre nas propriedades do servidor e defina um min e máx para o SQL Server. Se o seu servidor por exclusivo para o SQL Server, deixando uns 700MB para o SO deverá ajudar. Caso seu servidor também rode outras aplicações ou deixe 1GB.

    O artigo do link abaixo também pode ter ajudar...http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=170

    um abraço

    sexta-feira, 11 de agosto de 2006 18:23
    Moderador
  • Vimisterion,

    Com as dicas dos colegas, você vai identificar seus problemas facilmente.

    Porém quero apenas adicionar mais uma dica:

    O SQL Server compila e deixa o plano em cache de todas as queries exceto as que possuem variáveis tipo table, por isso é sugerido utilizar Stored Procedures, Function e etc.

    Quando você tem um ambiente onde execute diversas queries Ad-hoc, você pode ter um problema pois ao alterar um parâmetro, ele compila essa querie como outra e coloca no cache, veja um exemplo:

    Q1: select * from employees where fname like 'S%'

    Q2: select * from employees where fname like 'D%'

    Q3 select * from employees where fname like 'S%'

    Q3 utiliza o plano da Q1.

    Porém Q2 precisa ser compilada.

    Sendo assim, sugiro que você analise se está com muitas compilações e recompilações. Você consegue pegar isso pelo SQL Profiler e pode ver também pelo Perfmon.

    Verifique também o que está no cache da sua instância SQL Server:

    select * from master..syscacheobjects

    where dbid = xx ou object_id = xxxxxxx

    E existem outras maneiras de fazer o filtro.

     

    Espero que isso te ajude !

    Esta informação foi útil para você ? Então marque-a como tal !

    Abraços,

    sexta-feira, 11 de agosto de 2006 19:17