none
permofamace do banco RRS feed

  • Pergunta

  • por favor tenho um banco instalado e preciso saber como ver a perfomace dele e tambem preciso saber como deixar ele mais rapido pois o cliente esta reclamando que a tela de relatórios esta demorando muito
    terça-feira, 16 de dezembro de 2014 13:22

Respostas

  • Lucas,

    A primeira pergunta é: todos os relatórios estão demorando muito e o sistema como um todo está lento ou é apenas um ou dois relatórios/funcionalidades?
    Isso porque podemos ter queries lentas que podem ser tratadas pontualmente ou podemos ter um problema no servidor que está deixando as queries lentas.

    Para verificar como anda o seu servidor, você pode usar o perfmon. Abaixo seguem alguns links que eu considero útil:

    https://fabiozibiani.wordpress.com/2011/01/11/um-pouco-mais-de-perfmon-contadores-de-performance-o-que-monitorar/
    http://marcosfreccia.wordpress.com/tag/perfmon/

    http://pedrogalvaojunior.wordpress.com/2012/04/25/utilizando-a-funcao-de-gerenciamento-dinamico-sys-dm_os_performance_counters-para-obter-informacoes-em-tempo-real-sobre-memoria-no-microsoft-sql-server-2008-e-r2/

    Se você chegar a conclusão que seu servidor está tranquilo, mas suas queries continuam lentas, precisa analisar uma a uma.
    Ai você pode postar aqui o código e as partes que te geram dúvidas em relação a performance que com certeza o pessoal do fórum irá te ajudar a trabalhar nelas.

    []'s


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    terça-feira, 16 de dezembro de 2014 15:28
  • Lucas,

    Deixar uma instância SQL mais rápida depende sobre o que pode estar impactando a performance de suas consultas. Isto pode ser inúmeros fatores.

    Eu recomendo que você identifique às consultas com maior lentidão e crie índices para ele. O SSMS proporciona você a utilizar uma opção chamada "Display Estimated Execution Plan". 

    Copie sua consulta para uma nova janela de "query" do SSMS e clique com os botões (CTRL + SHIFT + ALT + L) ou se preferir, clique no ícone da interface como indicado na imagem abaixo:

    O SQL Server vai analisar o Plano de Execução desta consulta e vai propor a criação de um novo índice "em verde" (apenas se necessário). Então clique com o botão direito sobre a mensagem e selecione a opção "Missing Index Details...". O SSMS vai abri uma nova janela com esta proposta de índice para que você adicione um nome e outros parâmetros (caso necessário) para seu novo índice. Execute a criação do índice e depois repita a operação. Logo você vai perceber que suas consultas precisavam de índices para cada situação.

    Se já existem índices, então recomendo que você faça um REBUILD em um horário alternativo para minimizar o impacto no uso de seus usuários. 

    Para começar a monitorar sua instância SQL, sugiro que você utilize o "Activity Monitor" e depois que conhecer melhor o que cada informação deste, você poderá ainda monitorar por outros recursos, como:

     - SQL Profiler;

     - Relatórios do SQL Server;

     - DMV's;

     - Extended Events, e;

     - outros;

    No caso do "Activity Monitor", no SSMS clique com o botão direito no nome de sua instância e selecione "Activity Monitor", como indicado na imagem abaixo:

    Para maiores informações veja:

    http://msdn.microsoft.com/pt-br/library/ms175518.aspx

    http://msdn.microsoft.com/pt-br/library/ms191511.aspx

    http://msdn.microsoft.com/pt-br/library/jj835095(v=sql.110).aspx

    http://msdn.microsoft.com/pt-br/library/ms189858.aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 16 de dezembro de 2014 15:40

Todas as Respostas

  • Não tem um botão específico para analisar isso, mas existe um conjundo de coisas que você pode analisar para definir o que pode estar impactando em suas consultas. Os itens que voc~e pode analisar:

    - Query que está executando: ao rodar ela diretamente no banco (sem a aplicação), quanto tempo demora, e quantos roundtrip ela faz para encontrar os dados.

    - Order By do SQL é uma "engine" separada, não proprietário da Microsoft. E portanto, tem seu peso de desempenho. Em muitos casos, convém não ordenar no banco e deixar isso a critério da aplicação.

    - Testar a query com "EXISTS" ao invés de "IN";

    - Parenteses nos operadores "OR"

    - Executar a query acima com o Plano de Execução e Estatísticas ativados (Management Studio): http://www.mssqltips.com/sqlservertutorial/2252/estimated-vs-actual-query-plan/

    Analisar o plano de execução não é algo trivial, então requer um pouco de conhecimento para detectar gargalos. Mas em alguns casos (como falta de indices), ele te avisa.

    - Estando a SQL ok, e rápida, mas se a lentidão ainda ocorre, talvez seja a implementação de seu relatório que esteja ruim.

    Enfim... alguns itens a considerar.

    Para detalhes mais profundos: http://msdn.microsoft.com/en-us/library/ff647793.aspx



    terça-feira, 16 de dezembro de 2014 15:24
  • Lucas,

    A primeira pergunta é: todos os relatórios estão demorando muito e o sistema como um todo está lento ou é apenas um ou dois relatórios/funcionalidades?
    Isso porque podemos ter queries lentas que podem ser tratadas pontualmente ou podemos ter um problema no servidor que está deixando as queries lentas.

    Para verificar como anda o seu servidor, você pode usar o perfmon. Abaixo seguem alguns links que eu considero útil:

    https://fabiozibiani.wordpress.com/2011/01/11/um-pouco-mais-de-perfmon-contadores-de-performance-o-que-monitorar/
    http://marcosfreccia.wordpress.com/tag/perfmon/

    http://pedrogalvaojunior.wordpress.com/2012/04/25/utilizando-a-funcao-de-gerenciamento-dinamico-sys-dm_os_performance_counters-para-obter-informacoes-em-tempo-real-sobre-memoria-no-microsoft-sql-server-2008-e-r2/

    Se você chegar a conclusão que seu servidor está tranquilo, mas suas queries continuam lentas, precisa analisar uma a uma.
    Ai você pode postar aqui o código e as partes que te geram dúvidas em relação a performance que com certeza o pessoal do fórum irá te ajudar a trabalhar nelas.

    []'s


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    terça-feira, 16 de dezembro de 2014 15:28
  • Lucas,

    Deixar uma instância SQL mais rápida depende sobre o que pode estar impactando a performance de suas consultas. Isto pode ser inúmeros fatores.

    Eu recomendo que você identifique às consultas com maior lentidão e crie índices para ele. O SSMS proporciona você a utilizar uma opção chamada "Display Estimated Execution Plan". 

    Copie sua consulta para uma nova janela de "query" do SSMS e clique com os botões (CTRL + SHIFT + ALT + L) ou se preferir, clique no ícone da interface como indicado na imagem abaixo:

    O SQL Server vai analisar o Plano de Execução desta consulta e vai propor a criação de um novo índice "em verde" (apenas se necessário). Então clique com o botão direito sobre a mensagem e selecione a opção "Missing Index Details...". O SSMS vai abri uma nova janela com esta proposta de índice para que você adicione um nome e outros parâmetros (caso necessário) para seu novo índice. Execute a criação do índice e depois repita a operação. Logo você vai perceber que suas consultas precisavam de índices para cada situação.

    Se já existem índices, então recomendo que você faça um REBUILD em um horário alternativo para minimizar o impacto no uso de seus usuários. 

    Para começar a monitorar sua instância SQL, sugiro que você utilize o "Activity Monitor" e depois que conhecer melhor o que cada informação deste, você poderá ainda monitorar por outros recursos, como:

     - SQL Profiler;

     - Relatórios do SQL Server;

     - DMV's;

     - Extended Events, e;

     - outros;

    No caso do "Activity Monitor", no SSMS clique com o botão direito no nome de sua instância e selecione "Activity Monitor", como indicado na imagem abaixo:

    Para maiores informações veja:

    http://msdn.microsoft.com/pt-br/library/ms175518.aspx

    http://msdn.microsoft.com/pt-br/library/ms191511.aspx

    http://msdn.microsoft.com/pt-br/library/jj835095(v=sql.110).aspx

    http://msdn.microsoft.com/pt-br/library/ms189858.aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 16 de dezembro de 2014 15:40