Loading…

Melhorando a Performance de Consultas no Totvs Protheus – Parte 8

Fala Pessoal,

Estamos de volta com novos episódios da série de análise de queries de ambientes Totvs Protheus.

Antes de lerem esse post, caso ainda não tenham lido os anteriores, sugiro que façam:

No post de hoje vamos analisar esse pequeno monstro que estava demorando 4 minutos para executar:

obs.: Os parâmetros estão com valores fictícios.

Fabrício, você sabe o que essa query faz no Protheus?

R: Não tenho a menor ideia, mas não precisamos saber para atuar.

Usamos o SET STATISTICS IO,TIME ON para ver o consumo da query:

SQL está matando o tempdb para rodar essa query.

Olhando o plano dela também podemos ver isso. O plano do monstro é gigante, então vou colocar só uma parte dele:

Reparem os operadores de Spool. O Spool armazena um resultado temporário no TempDB para ser reutilizado em consultas futuras na execução dessa query.

Quer saber mais sobre o Spool?

Segue post do mestre Fabiano Amorimhttps://blogfabiano.com/2009/01/13/operador-do-dia-spool/

Olhando para a query já conseguimos ver coisas estranhas nesse monstrinho né!?

6 Subqueries com o mesmo código?

Hummm…

Alterar a query não é possível. Só conseguimos resolver com índices.

Olhando só a subquery:

Será que existe um índice começando por D2_COD?

R: Não existia.

Se eu criar vai ajuda essa query?

R: Vamos descobrir.

Segue o índice que foi criado:

Após criar o índice, a query que rodava em 4 minutos passou a rodar em 3 segundos.

WOW!

Mesmo a query sendo um monstrinho com 6 subqueries conseguimos fazer ela rodar em 3 segundos.

Melhorias:

  • Tempo total de 4min05seg para 03 seg.
  • 6 minutos consumindo CPU (em paralelo) para 12 segundos de processamento. De nada, processador!
  • 86 milhões de leituras no tempdb para 4 mil leituras. De nada, Disco!
  • A quantidade de leituras na SD2 aumentou, mas nosso problema foi resolvido. Segue a vida.

Viram quanta leitura e quanta CPU sendo consumida?

Antes de comprar hardware, analise algumas consultas que pode ter a mesma melhoria deixando de usar recursos sem necessidade.

É isso ai pessoal, melhoramos mais uma query do Totvs Protheus.

Até a próxima análise de query.

 

Atualizado no dia 07/10/2020:

Publiquei um curso com 11 horas de duração com toda minha experiência de anos no assunto e de dezenas de clientes Protheus atendidos:

Curso: Melhorando a Performance de Consultas no Totvs Protheus

Gravei uma aula grátis com 60 minutos de duração sobre o que você deve aprender para melhorar a performance no Protheus:

 

Gostou desse Post?

Curta, comente, compartilhe com os coleguinhas…

Assine meu canal no Youtube e curta minha Página no Facebook para receber Dicas de Leituras e Eventos sobre SQL Server.

Abraços,

Fabrício Lima

Microsoft Data Platform MVP

Consultor e Instrutor SQL Server

Trabalha com SQL Server desde 2006

2 thoughts on “Melhorando a Performance de Consultas no Totvs Protheus – Parte 8

Deixe uma resposta