none
Análise de desempenho e dúvidas referente a infraestrutura RRS feed

  • Pergunta

  • Ola, pessoal


    Trago hoje uma questão sobre performance e hardware.

    Existe uma consulta no sistema que roda rapidamente no meu computador de trabalho (em torno de 20s que vou considerar como aceitável, pelo volume de dados, que não é nada exorbitante, mas é um bd com seus 6gb),
    E outra consulta que leva em torno de 6s (depois de ter aperfeiçoado ela, e criado um índice específico).

    --

    No ambiente do usuário, em situação de horário fora de expediente, ambas as consultas levam absurdamente mais tempo... mais de 1 min cada.

    Diferenças básicas: 1. no meu PC tem ssd, e no cliente não; 2. No cliente a versão é express, no meu, developer (está configurado para usar 4gb).

    A diferença parece ser gritante entre máquina com HD normal e SSD, mesmo que o ambiente do usuário tenha um hardware bem melhor, (xeon 4 nucleos, 16Gb de memoria),
    porém com o hd fica extremamente demorada a consulta.

    Considerando tbm que no cliente está a versão Express (SQL Server 2016), que inicialmente eu achei que poderia ser um fator significativo, porém, não sei se é, pois rodando a consulta, o uso de memória do sql server chega a 1.7Gb , no cliente (com express) e no meu pc, uns 2gb e pouco, não passa muito disso.

    O que eu noto em determinados momentos do processamento da consulta, é que há uma utilização de HD muito grande, e eu acho que é este o fator determinante.

    É isso, na verdade, que eu gostaria de enteder melhor. Porque há tanta necessidade de uso do HD? no meu pc, com um BD inteiro de 6Gb e o sql server utilizando até 4gb de memoria, não teria os dados já na memoria?

    Há alguma forma (dmv... ou outra) de saber se as consultas estão utilizando memoria e quanto; ou a consulta requer ler do hd.... o processamento da consulta.... etc?


    A diferença se torna maior ainda, caso eu utilize os comandos DBCC FREEPROCCACHE  e DBCC DROPCLEANBUFFERS , o que normalmente eu faço para comparação de performance entre consultas.

    Isso é recomendado, ou o correto (para utilizar a memoria e considerar essas variáveis do ambiente, seria melhor executar a consulta a primeria vez, e considerar a segunda execução?)

    E esses comandos tem efeitos colaterais , motivo pelo qual deveria ser evitados?

    (claro, se for o caso de executar no cliente, sempre quando não há operações no sistema)

    ** Esse assunto surgiu e veio para análise, quando o cliente relatou que enquanto tirara determinado relatório no sistema, o PDV "trancava". A principio analisei que essas consultas demoradas podem estar causando isso.

    • Editado Julio Costi sexta-feira, 6 de março de 2020 12:29
    sexta-feira, 6 de março de 2020 12:11

Todas as Respostas

  • Deleted
    • Marcado como Resposta Julio Costi sexta-feira, 6 de março de 2020 14:41
    • Não Marcado como Resposta Julio Costi terça-feira, 10 de março de 2020 14:32
    sexta-feira, 6 de março de 2020 14:15
  • Deleted
    sexta-feira, 6 de março de 2020 14:54
  • A versão Express do sql server possui limitações de desempenho (tamanho do BD, quantidade de cores usados). Será que isso não pode influenciar ?

    sexta-feira, 6 de março de 2020 14:55
  • "Júlio, achei estranho que já marcou a resposta como correta, sem dar continuidade ao assunto. O problema foi resolvido somente com as indicações iniciais?"

    Não não, vou dar continuidade no assunto após o horário de funcionamento diário da empresa.

    Explicando: Eu achei as informações extremamente úteis, como a minha questão é bastante subjetiva, acho que esse tipo de resposta é o que se espera, vou analisar esses pontos, vou pegar o plano de execução, se conseguir coloco aqui.

    Talvez não seja o correto então, qualquer coisa avisa aí, que mudo isso para as próximas.
    • Editado Julio Costi sexta-feira, 6 de março de 2020 16:44
    sexta-feira, 6 de março de 2020 16:41
  • A versão Express do sql server possui limitações de desempenho (tamanho do BD, quantidade de cores usados). Será que isso não pode influenciar ?

    Quanto ao uso de memória, apesar de na documentação falar de 1.4Gb, o processo do SQL Server estava utilizando 1.7Gb (no cliente), e no meu PC apenas um pouco a mais (2.alguma coisa Gb). Achei que não seria para esta diferença toda.

    Quanto ao número de núcleos, pelo que vi tbm na documentação o Express permite utilizar 4 núcleos, não é? Nesse caso estaria utilizando todos os cores do servidor.

    Pelo tamanho máximo do BD, está com 6Gb, daqui a um tempinho sim, teremos que providenciar a migração da versão no cliente.

    Obrigado!


    Julio C.

    sexta-feira, 6 de março de 2020 16:48
  • Deleted
    terça-feira, 10 de março de 2020 10:15