Inquiridor
Como medir performance por base de DADOS? Help

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:12Moderador -
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:23Moderador -
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