none
SQL 2008 Lento em tudo! (do nada) RRS feed

  • Pergunta

  • Olá, 

    Estou com problema no SQL. Ele do nada ficou lento e não tem resolvido as consultas com a performance que possuia.

    Não foi feito nenhuma alteração em termos da quantidade de usuários, ou de hardware. 

    Por onde devo começar a investigação do que está acontecendo? 

    Encontrei o código abaixo na WEB e não sei se funcionará no meu caso.

    DBCC FREEPROCCACHE
    DBCC DROPCLEANBUFFERS

    Já rodo dia-a-dia (na madrugada) o updatestatistcs e reindex. 

    O que devo fazer? 

    Valeu!!!

     
    sexta-feira, 13 de dezembro de 2013 01:21

Respostas

  • Boa noite, Pablicio.

    Antes de mais nada, sou novo em SQL e atualmente estou estudando. 

    --

    Faz um teste com os códigos citados, os mesmos tem como função em remover os buffers do SQL SERVER.

    Já verificou como estão seus indexes? Grande maioria das vezes as consultas ficam mais lentas por falta de indexes, talvez, este pode ser o problema. 

    Abs,

    Rafael Marvila



    • Editado Rafael Marvila sexta-feira, 13 de dezembro de 2013 01:47
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:27
    sexta-feira, 13 de dezembro de 2013 01:47
  • Bom dia Pablicio,

    Nesse link tem alguns procedimentos para investigação de performance do SQL, creio que seja util: http://blogs.msdn.com/b/anthonybloesch/archive/2012/12/07/sql-server-performance-investigation.aspx

    Outra coisa, você pode utilizar o Performance Dashboard Reports para monitorar o que pode estar ocorrendo:

    http://blogs.technet.com/b/rob/archive/2009/02/18/performance-dashboard-reports-for-sql-server-2008.aspx

    Att, 


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Sugerido como Resposta Edinaldo Junior terça-feira, 17 de dezembro de 2013 14:31
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:27
    sexta-feira, 13 de dezembro de 2013 10:09
  • Bom dia,

    Com relação aos comandos DBCC FREEPROCCACHE e DBCC DROPCLEANBUFFERS não acredito ser uma boa ideia usá-los, pois eles tem a função de limpar o buffer, uso do buffer é muito importante para ter performance, o sqlserver armazena nele o que está sendo realizado e quando tem uma requisição primeiro olha no buffer, diminuindo o acesso a disco que é mais lento, limpando o buffer o sqlserver vai colocar tudo lá de novo e as requisições que serão feitas que poderiam estar em memória terão que ser buscadas no disco. Quanto a performance revise as configurações do seu servidor. Monitore a atividade usando o activity monitor, capture as querys que usam mais processamento e veja como estão os índices dessas consultas.

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:27
    sexta-feira, 13 de dezembro de 2013 11:14
  • Você já verificou se em algum momento do dia não existe nenhum job agendado rodando alguma rotina pesada? Como você disse que fica bom e de repente fica ruim pode ter algum procedimento que está causando isso, ou até mesmo uma query ou uma atualização em lote.
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:26
    sexta-feira, 13 de dezembro de 2013 14:34
  • Boa noite,

    Não utilize esses comandos DBCC em produção(Você vai limpar todo o Buffer Pool do SQL Server), eles são bom para verificamos planos de execuções em banco de dados de teste, e outros problemas de performance.

    Não sei se há muitas transações no servidor, mas acredito que você pode mesclar o resultado do SQL Server Profile com Perfmon, para determinar qual query está pesando o servidor, pode ser uma query pesando, ou varias, executando simultaneamente.

    Ajuda: http://www.sqlservercentral.com/blogs/sql-toast/2013/10/09/merge-outputs-of-perfmon-and-profiler-to-get-a-great-view/


    Jefferson Santos [MCTS SQL Server]

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:26
    terça-feira, 17 de dezembro de 2013 00:40
  • Olá,

        - Seu ambiente é físico ou virtual?

        - Você já verificou a fila de disco do seu servidor?

        - Verificou se foi aplicado algum patch no Windows ou mesmo no SQL?

        - De uma olhada nesse link e veja se pode ajudar http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    • Sugerido como Resposta Edinaldo Junior terça-feira, 17 de dezembro de 2013 14:31
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:26
    terça-feira, 17 de dezembro de 2013 14:28
    Moderador
  • Você pode usar o Perfmon (Performance Monitor) que vem com o Windows... Veja o contador Logical Disk: Avg Disk Sec/Writes, Avg Disk Sec/ Reads... um valor médio de 0,008 pode ser considerado normal...

    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:26
    quarta-feira, 18 de dezembro de 2013 16:04
    Moderador
  • Nesta página, encontrará uma Store Procedure interessante, onde demonstra diversos dados sobre o que esta sendo usado, quem esta usando, e quanto está usando:

    Após criar a Store Procedure, basta rodar:

    SP_WHOISACTIVE

    http://sqlblog.com/blogs/adam_machanic/archive/tags/who+is+active/default.aspx

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:26
    quinta-feira, 19 de dezembro de 2013 12:54

Todas as Respostas

  • Boa noite, Pablicio.

    Antes de mais nada, sou novo em SQL e atualmente estou estudando. 

    --

    Faz um teste com os códigos citados, os mesmos tem como função em remover os buffers do SQL SERVER.

    Já verificou como estão seus indexes? Grande maioria das vezes as consultas ficam mais lentas por falta de indexes, talvez, este pode ser o problema. 

    Abs,

    Rafael Marvila



    • Editado Rafael Marvila sexta-feira, 13 de dezembro de 2013 01:47
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:27
    sexta-feira, 13 de dezembro de 2013 01:47
  • Olá Rafael, obrigado pelo retorno. 

    Então, os índices e estatísticas estão sendo refeitos todas as madrugadas e já revisamos os índices que precisamos e aparentemente está tudo acerto neste quesito, até mesmo por que nada da estrutura do banco foi alterado, o que poderia nos levar que a alteração é que gerou a lentidão. 

    Quanto aos dois comando que me referi, não sei bem sobre o funcionamento dos dois, mas acredito que possa alivar um pouco, pois entendi que mesmo eu parando o serviço e voltando o buffer do SQL continua lá. Se esse comando não gerar nenhum risco, posso colocá-lo para rodar todas a noites também. 

    Uma outra questão que tive pesquisando é sobre plano de execução, pois utilizamos bastante SP. Daí encontrei os comandos abaixo, que parecem ajudar um pouco, mas também tenho que pesquisar melhor. 

    sp_configure 'show advanced options'1

    RECONFIGURE
    GO
    sp_configure 'optimize for ad hoc workloads'1
    RECONFIGURE

    Se conseguir ajudar mais um outo eu lhe agradeço. 

    Abs. 

    Pablicio 

    sexta-feira, 13 de dezembro de 2013 09:51
  • Bom dia Pablicio,

    Nesse link tem alguns procedimentos para investigação de performance do SQL, creio que seja util: http://blogs.msdn.com/b/anthonybloesch/archive/2012/12/07/sql-server-performance-investigation.aspx

    Outra coisa, você pode utilizar o Performance Dashboard Reports para monitorar o que pode estar ocorrendo:

    http://blogs.technet.com/b/rob/archive/2009/02/18/performance-dashboard-reports-for-sql-server-2008.aspx

    Att, 


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Sugerido como Resposta Edinaldo Junior terça-feira, 17 de dezembro de 2013 14:31
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:27
    sexta-feira, 13 de dezembro de 2013 10:09
  • Bom dia,

    Com relação aos comandos DBCC FREEPROCCACHE e DBCC DROPCLEANBUFFERS não acredito ser uma boa ideia usá-los, pois eles tem a função de limpar o buffer, uso do buffer é muito importante para ter performance, o sqlserver armazena nele o que está sendo realizado e quando tem uma requisição primeiro olha no buffer, diminuindo o acesso a disco que é mais lento, limpando o buffer o sqlserver vai colocar tudo lá de novo e as requisições que serão feitas que poderiam estar em memória terão que ser buscadas no disco. Quanto a performance revise as configurações do seu servidor. Monitore a atividade usando o activity monitor, capture as querys que usam mais processamento e veja como estão os índices dessas consultas.

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:27
    sexta-feira, 13 de dezembro de 2013 11:14
  • Obrigado Giovani pela ajuda 
    sexta-feira, 13 de dezembro de 2013 13:29
  • Olá Wellington,  

    Você tem razão, é questão a ser pesquisada. 

    As análises estão sendo feitas e o que mais intriga, é que em determinado momento fica super bem o ambiente e depois fica lento por demais! Considerando a mesma quantidade de usuários e processos sendo executados. 

    sexta-feira, 13 de dezembro de 2013 13:31
  • Você já verificou se em algum momento do dia não existe nenhum job agendado rodando alguma rotina pesada? Como você disse que fica bom e de repente fica ruim pode ter algum procedimento que está causando isso, ou até mesmo uma query ou uma atualização em lote.
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:26
    sexta-feira, 13 de dezembro de 2013 14:34
  • Então .. 

    Já desliguei tudo, jobs, backups, antivírus e etc. 

    sexta-feira, 13 de dezembro de 2013 14:35
  • Boa noite,

    Não utilize esses comandos DBCC em produção(Você vai limpar todo o Buffer Pool do SQL Server), eles são bom para verificamos planos de execuções em banco de dados de teste, e outros problemas de performance.

    Não sei se há muitas transações no servidor, mas acredito que você pode mesclar o resultado do SQL Server Profile com Perfmon, para determinar qual query está pesando o servidor, pode ser uma query pesando, ou varias, executando simultaneamente.

    Ajuda: http://www.sqlservercentral.com/blogs/sql-toast/2013/10/09/merge-outputs-of-perfmon-and-profiler-to-get-a-great-view/


    Jefferson Santos [MCTS SQL Server]

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:26
    terça-feira, 17 de dezembro de 2013 00:40
  • Olá,

        - Seu ambiente é físico ou virtual?

        - Você já verificou a fila de disco do seu servidor?

        - Verificou se foi aplicado algum patch no Windows ou mesmo no SQL?

        - De uma olhada nesse link e veja se pode ajudar http://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    • Sugerido como Resposta Edinaldo Junior terça-feira, 17 de dezembro de 2013 14:31
    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:26
    terça-feira, 17 de dezembro de 2013 14:28
    Moderador
  • Olá Roberto, 

    O ambiente é virtualizado. 

    Não sei como verificar a fila de disco. Isso é feito por algum programa/Sistema? 

    Vou olhar o link que você recomendou. 

    Obrigado. 

    Pablicio 

    quarta-feira, 18 de dezembro de 2013 15:02
  • Você pode usar o Perfmon (Performance Monitor) que vem com o Windows... Veja o contador Logical Disk: Avg Disk Sec/Writes, Avg Disk Sec/ Reads... um valor médio de 0,008 pode ser considerado normal...

    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:26
    quarta-feira, 18 de dezembro de 2013 16:04
    Moderador
  • Nesta página, encontrará uma Store Procedure interessante, onde demonstra diversos dados sobre o que esta sendo usado, quem esta usando, e quanto está usando:

    Após criar a Store Procedure, basta rodar:

    SP_WHOISACTIVE

    http://sqlblog.com/blogs/adam_machanic/archive/tags/who+is+active/default.aspx

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:26
    quinta-feira, 19 de dezembro de 2013 12:54