locked
Diferença absurda na coluna reads. RRS feed

  • Pergunta

  • Olá a todos,

    alguém saberia me dizer pq. existe diferenças absurdas no resultado do profiler na coluna reads qdo. faço uma chamada de uma proc. via um webserver e via management studio ??? Mesmo sendo a mesma chamada em direfentes momentos para que pudesse discartar o fator "cache" da história. Segue evidencias:

    WebServer
    RPC:Completed Internet Information Services    109 117 WHR-WEB03 ikeda_b2c 83893 4 162 2009-07-24 16:04:44.233 exec ListarADM_Compras 10100207,476 0

    Management Studio
    SQL:BatchCompleted Microsoft SQL Server Management Studio - Query 16 19 TI10818  ikeda_b2c 118 4 63 2009-07-24 16:09:47.340 exec ListarADM_Compras 10100207,476 0 

    Reparem que na primeira a qtd. de reads foi acima de 80000 e na outra foi de 118 e esse comportamento sempre acontece.

    Valew !!!

    • Movido Gustavo Maia Aguiar terça-feira, 28 de julho de 2009 09:46 (De:SQL Server - Desenvolvimento Geral)
    segunda-feira, 27 de julho de 2009 14:28

Todas as Respostas

  • Osvaldo,

    Se não estou falando besteira, mas é o que eu sei, pelo simples motivo de você estar fazendo acesso através de um webserver, pois o tempo de resposta é o tamanho dos pacotes tcp/ips força o SQL Server realizar mais leitura de informações para retornar o dado desejado.

     


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 27 de julho de 2009 16:11
    Moderador
  • Olá Junior...

    sinceramente acho muito estranho esse comportamento no sql server pois o valor que apresenta no profiler aparentemente é a qtd de leitura nas tabelas simplesmente. Se fosse por acrecentar algo em função do protocolo até acho sensato.

    segunda-feira, 27 de julho de 2009 17:28
  • Osvaldo,

    Mas como esta acessando remotamente este terá que fazer mais acessos para obter os dados, ao contrário do acesso local.

    Isso é muito comum quando temos um aplicação rodando local e depois colocamos esta aplicação em um ambiente client-server ou web.

    Agora esta quantidade de leitura das tabelas precisa ser verificado talvez o ambiente que esta na web possa estar apresentando fragmentação de dados.

    Seria utilizar utilizar o comando DBCC ShowContig.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 28 de julho de 2009 14:11
    Moderador
  • Junior vc me deixou uma dúvida, posso estar falando besteira, mas acho que a quantidade de leitura de uma execução de procedure onde a origem da chamada seja local ou externa não deveria ser diferente, pois em ambas formas é enviado uma solicitação ao sql server, onde ele irá realizar todo o processo necessário e retornar o resultado, quem faz essa execução é um worker local no servidor. a quantidade de paginas lidas não deveria ser diferente de acordo com a origem ainda mais em uma procedure que fica "pré-compilada" no servidor.

    A minha dúvida se executando pelo management ele simplesmente não da um exec proc fazendo assim o sql server aproveitar o plano já preparado para esta procedure e executando remotamente pela aplicação ela não manda o exec desta proc de forma dinamica, fazendo com que o sql server não aproveite assim o plano já preparado para a procedure.

    pois pelo pouco que entendo ao chamar uma proc pela aplicação ela simplesmente manda a chamada o código da proc esta encapsulado no servidor sql e nao passa pela rede, desta forma não impactando na leitura realizada pelo servidor.

    pessoal se falei besteita me desculpem e juniro se puder desenrolar o que falei ou alguma outra opnião um pouco mais clara agradeço, pois acabou virando uma dúvida minha também..


    DBA SQL Server MCTS - SQL Server 2005 | ITIL Foundation V2 http://www.bydocs.com
    quarta-feira, 29 de julho de 2009 01:32
  • Concordo com o Cleyton,

    ao meu ver não existe o pq. de os valores serem tão absurdamente diferentes e acredito que por se tratar de uma proc, o fato de estar sendo invocada via management studio ou webserver não alteraria planos de execução nem tão pouco qtd de leitura nas tabelas pois na coluna em questão do profiler se refere a reads nas tabelas e não algo relacionado a trafego ou algo assim.
    quarta-feira, 29 de julho de 2009 14:00
  • Cleyton,

    Quando utilizamos o comando EXEC o SQL Server descarta completamente o plano de execução, neste caso o SQL Server vai ignorar completamente qualquer cache ou plano de execução já definido para esta sp.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quarta-feira, 29 de julho de 2009 14:32
    Moderador
  • Osvaldo,

    Existem diversas situações que podem esta ocassionando esta diferença, não posso afirmar o que pode esta ocorrendo pois não conheço os ambientes que estão sendo executados estas consultas ou procedures.

    Mas como destaquei anteriormente podemos estar se deparando com ambientes semelhantes em sua estrutura mas com diferenças no armazenamento de dados, ou seja, pode estar ocorrendo algum tipo de fragmentação nos dados armazenados no webserver.

    Por isso indiquei realizar alguns procedimentos para obter dados das defragmentações, outra consideração que precisamos verificar é como esta as informações sobre as estatísticas de banco de dados e índices.

    Obrigado.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quarta-feira, 29 de julho de 2009 14:35
    Moderador
  • Cleyton,

    Quando utilizamos o comando EXEC o SQL Server descarta completamente o plano de execução, neste caso o SQL Server vai ignorar completamente qualquer cache ou plano de execução já definido para esta sp.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA

    Não pode ser essa uma das diferenças? quando ele executa pelo management o sql usa o plano criado e já pré-compilado e quando ele executa remotamente por ser enviada dinamicamente o sql descarta o plano obrigando-o a gerar mais leituras devido ao maior caminho a ser percorrido devido a ausencia de plano de execução eficaz?
    DBA SQL Server MCTS - SQL Server 2005 | ITIL Foundation V2 http://www.bydocs.com
    quarta-feira, 29 de julho de 2009 14:44
  • Cleyton,

    Pode ser sim, isso vai depender da forma que esta sendo executado esta stored procedure.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quarta-feira, 29 de julho de 2009 14:56
    Moderador