Árvore de páginas

Tempo aproximado para leitura: 15 min

01. DADOS GERAIS

Linha de Produto:Microsiga Protheus
Segmento:Supply Chain - Logística
Módulo:SIGAGFE - Gestão de Frete Embarcador
Função:

GFEA115 - Importar Conemb

GFEA118 - Importar CT-e

Ticket:5396793
Requisito/Story/Issue (informe o requisito relacionado):DLOGGFE-8967


02. SITUAÇÃO/REQUISITO


2.1. Problemas: 

  1. Ao importar Notas de CT-e (Conhecimento de Transporte Eletrônico) ocorre problema de performance. O sistema leva muito tempo para processar os arquivos.
  2. No momento da importação, o sistema não indica o percentual de conclusão na barra de progresso. Como é uma atividade que exige muito processamento, é imprescindível que o sistema demonstre ao usuário o tempo restante para concluir a importação.


2.2. Onde ocorrem os problemas:

Os problemas citados ocorrem nas seguintes rotinas:

  1. Importar Conemb (GFEA115)
  2. Importar Ct-e (GFEA118)


2.3. Como ocorrem os problemas:

Constatou-se que a aplicação estava realizando muitas consultas no banco de dados, e que nestas consultas, os índices não eram adequados.

Assim, tanto a aplicação quanto o dicionário de dados (na parte de índices) necessitaram de ajustes.


2.4. Metodologia de teste:

Para avaliar a situação o seguinte cenário foi utilizado:

Ambiente:

  • Protheus 12.1.23
  • RPO: Lobo Guará
  • APP Server, DB Access e Smartclient instalados localmente na mesma máquina
  • Banco de dados: Microsoft SQL Server 2014
  • Sistema Operacional: Windows 7 64 bits
  • Memória: 8 GB

Importação de arquivos:

  • Foi testada a importação de dois arquivos EDI simultaneamente, cada um com 155 linhas.

Rotinas:

  • A rotina utilizada para teste foi a Importar Conemb (GFEA115), visto que ambas as rotinas possuem a mesma chamada à função de importação localizada nesta rotina.


2.5. Resultados obtidos:

1) Barra de progresso nunca progride:


2) Tempo total de processamento dos arquivos: 3 min e 21 segundos:

               


3) Exemplos de consultas redundantes:


4) Plano de execução do SQL Server - Tabela GW1:


5) Plano de execução do SQL Server - Tabela GXP:


6) Plano de execução do SQL Server - Tabela GXG:


7) SQL Profiler - Quantidade de Consultas x Recursos:


8) SQL Profiler - Consultas mais demoradas:


9) SQL Profiler - Consultas que consomem mais recursos:


10) SQL Profiler - Arquivo de trace:

GFEA115_1.trc


03. SOLUÇÃO

Após a análise criteriosa dos dados obtidos acima, foram realizadas as otimizações necessárias.

No banco de dados foi necessário criar novos índices, embasados na análise estatística do SQL Profiler e nos planos de execução.

Ademais, a aplicação foi corrigida para consumir menos consultas no banco de dados.


Dicionário de Dados

Para atualização do sistema, deve ser seguida a orientação descrita na seguinte página para atualizar o dicionário de dados - Atualizador de dicionário e base de dados - UPDDISTR


1.  Criação ou Alteração de Índices no arquivo SIX – Índices:

Índice

GW1

Ordem

K

Chave

GW1_NRDC+GW1_EMISDC+GW1_SERDC+GW1_FILIAL

Descrição

Numero + Emissor + Serie + Filial 

Proprietário

S

Índice

GW1

Ordem

C

Chave

GW1_DANFE+GW1_FILIAL

Descrição

Chave NF-e + Filial 

Proprietário

S

Índice

GU3

Ordem

F

Chave

GU3_IDFED+GU3_FILIAL+GU3_SIT  

Descrição

CNPJ + Filial + Situação

Proprietário

S

Índice

GXP

Ordem

5

Chave

GXP_DOCORI + GXP_EMIORI + GXP_SERORI + GXP_FILIAL

Descrição

Doc Orig + Emissor Orig + Serie Orig + Filial

Proprietário

S

Índice

GXP

Ordem

6

Chave

GXP_NRDC + GXP_EMISDC + GXP_SERDC + GXP_CDTPDC + GXP_FILIAL

Descrição

Numero + Emissor + Serie + Tipo Docto + Filial

Proprietário

S

Procedimentos para testar a rotina:

  1. Caso a correção não esteja disponível na release oficial, executar a função UPDDISTR não surtirá efeito. Então é necessário criar os índices via Configurador (SIGACFG). Para isso, execute o SIGACFG, acesse Base de Dados > Dicionário, e crie os índices mencionados;
  2. Em Gestão de Frete Embarcador (SIGAGFE), acesse: Atualizações > Integrações> Edi > Importar Conemb (GFEA115);
  3. Clique no botão Importar
  4. Selecione os parâmetros desejados na tela de perguntas;
  5. Verifique se a barra de progresso está funcionando, e se o tempo de processamento foi reduzido.


04. DEMAIS INFORMAÇÕES

IMPORTANTE!

Para a otimização funcionar completamente, é necessário que os índices sejam criados e que a rotina seja atualizada. É necessário criar os índices manualmente através do SIGACFG, caso a correção ainda não esteja oficializada na release atual.



Resultados obtidos após a otimização:


1) Tempo de processamento reduzido de 3 minutos e 21 segundos para 1 minuto e 16 segundos:


2) Corrigida a régua de progressão:


3) As consultas no banco de dados foram reduzidas:

  • Número de consultas: de 26.525 consultas para 8.387
  • Tempo de duração: de 4 minutos para 2 minutos
  • Quantidade de CPU em milissegundos: de 39.659 para 5.006
  • Número de leituras de Input/Output: de 1.036.961 para 149.398



GFEA115_2.trc


05. ASSUNTOS RELACIONADOS