locked
Lentidão no sistema durante geração de relatório grande

    Frage

  • Saudações amigos.

    Estou com um problema aqui na empresa, quando algum operador do sistema pede um relatório num período muito grande, o sistema fica lento, após o término de geração desse relatório o sistema volta ao normal.

    Gostaria da sugestão de você sobre como contornar esse problema, o relatório é pesado mesmo, isso não tem como mudar, estive pensando em usar o espelhamento da base, mais como meus conhecimentos são limitados fico na duvida se isso resolveria.

    Meu cenário é:

    Servidor 1 (HP): Sql server 2008 r2 e windows 2008 - 6Gb de memória , processador intel de 12 núcleos

    Servidor 2 (HP): IIS ( aplicação web em c#) e windows 2008 - 8 Gb de memória, processador intel de 4 núcleos

     

    Conto com a ajuda de voces.

    Abraços

    Eduardo Ribeiro

    proera@hotmail.com

    Dienstag, 20. September 2011 17:12

Alle Antworten

  • Eduardo, também não tenho um grande conhecimento, mas creio que espalhamento não resolveria e dependendo do tipo de espalhamento poderia até ocorrer um pouco mais de lentidão. O problema pelo que parece é apenas esse relatório, você tem essa consulta em mãos? talvez a resposta esteja em aplicar algumas boas práticas dentro dela.
    Dienstag, 20. September 2011 18:32
  • Eduardo

    Só o mirroring não te ajudaria, pois as bases ficam em restoring mode, vc precisaria fazer um snapshot toda vez que for rodar o relatório.

    uma replicacao somente das tabelas envolvidas pode ajuadar...

    Mas da uma olhada na query do relatório, veja como esta o plano de execução tem indices adequados.. e aplique a boa prática como indicado pelo amigo Eduardo


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    Dienstag, 20. September 2011 21:31
    Moderator
  • Eduardo,

    Você poderia contar um pouco mais sobre este relatóri? Ele é gerado no Reporting Services ou através de algum outro gerador de relatórios que realiza acesso ao seu banco de dados?

    Este período de tempo representa um faixa de valores ou um conjunto de informações grande que gerar um tempo de processamento além do normal?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    Sonntag, 25. September 2011 01:37
    Moderator
  • Boa Noite,

    Se o relatório é pesado e você não quer que ele concorra com as demais requisições, há opções iniciais:

    Usar o Resource Governor: O uso dessa feature poderia limitar o usuário do relatório a % de CPU e % de memória evitando que ele consuma toda a CPU e memória do SQL Server. O relatório acabaria demorando mais, só que as demais requisições sofreriam bem menos

    Usar uma estratégia de Data Push dos dados: Você poderia transportar esses dados para outro servidor e rodar o relatório no outro servidor. O transporte dos dados poderia ser feito via replicação, ETL (com o uso do SSIS por exemplo) ou até com o uso do Database Mirroring. Essa opção só é interessante quando o relatório permite delays como D-1, D-2, etc. Se o relatório tem de ser Real Time, será complicada essa opção (muito embora relatório "pesados") normalmente tenham certa tolerância a atrasos.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    Montag, 26. September 2011 03:08
    Moderator
  • Este post foi encerrado por ser considerado um post antigo.

    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    Dienstag, 5. Juni 2018 17:43
    Moderator