Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Produto:

Microsiga Protheus®

Versões:

SIGAFAT - Faturamento (P11.80 e P12)

Ocorrência:

Baixa performance na rotina de contabilização off-line do documento de saída (CTBANFS)

Conhecimento:

MÉTODO 1 → Contabilização Off-Line utilizando Múltiplas Threads para acelerar o processamento (MV_CNFSTHR)


Abaixo descrevo um comparativo entre o processamento padrão da rotina CTBANFS e o processamento com múltiplas threads.


SEM utilizar o parâmetro MV_CNFSTHR

Neste exemplo e utilizado um conjunto de 100 notas de saída para processamento da contabilização, veja abaixo que o processo padrão executa nota-a-nota não utilizando de forma exponencial todo percentual de processamento dos servidores.

 

 

COM a utilização do parâmetro MV_CNFSTHR

Neste exemplo e utilizado um conjunto de 100 notas de saída para processamento da contabilização e ativamos o parâmetro MV_CNFSTHR = 3, veja que o tempo de processamento e reduzido devido a execução em paralelo das notas de saída.

*Thread é um pequeno programa que trabalha como um subsistema independente de um programa maior, executando alguma tarefa específica. Um programa dividido em várias threads é processado mais rapidamente do que um programa monolítico, pois várias tarefas podem ser executadas simultaneamente, compartilhando os recursos do sistema.


(aviso) Observações

      • O numero máximo de threads para o parâmetro MV_CNFSTHR e 30, porem recomendamos testes com valores menores para acompanhar o ganho de performance.

      • Pergunta (Mostra Lançamento Contábil?) deve estar configurada com o conteúdo igual a "NÃO"

      • Pergunta (Aglutina Lançamentos?) deve estar configurada com o conteúdo igual a "NÃO"



      • O parâmetro MV_PRELAN deve esta configurado com o conteúdo igual a "D"

 

 


MÉTODO 2 → Contabilização Off-Line utilizando o parâmetro (MV_OPTNFS)

Esta parametrização muda o comportamento de processamento da rotina CTBANFS, pois na montagem da massa de dados para processamento ao invés de ler registro-a-registro a rotina monta uma query (Select) no banco de dados recuperando todos os registros a serem processados (CURSOR). Em testes em clientes verificamos um ganho de aproximadamente 30% no processamento da rotina.

Importante: Com a mudança do parâmetro e necessária uma revisão geral das LP's

Passo-a-passo

A. Alterar o parâmetro MV_OPTNFS para o conteúdo igual a .T. (Verdadeiro)

 

B. Realizar uma revisão das LP's abaixo trocando o alias das tabelas pelo nome do cursos "CTBANFS"

 

Lista de LP's disponíveis na rotina CTBANFS

Lanc. PadrãoDescrição
610Documento de Saída - Inclusão de Documento Itens                                                                        
611Rateio (Tabela SDE) - Devolução de Compras
612Pedido de Venda - Inclusão de Documento Itens                                                                           
613Documento de Saída - Inclusão de Documento Rateio Itens                                                                 
620Documento de Saída - Inclusão de Documento Total                                                                        
621Pedido de Venda - Inclusão de Documento Total                                                                           
631Permite a contabilização pela SL4 (Itens de Venda por Forma de Pagamento)
678Documento de Saída - Custo de Mercadoria Vendida                                                                        

 

Exemplo da troca do alias das tabelas:

No exemplo vou utilizar o principal lançamento padrão da rotina CTBANFS (610)


No modo PADRÃO (MV_OPTNFS = .F.) quando incluímos as LP's informamos nos campos macro-executados o apelido das tabelas utilizadas, no exemplo abaixo "SD2->"


No modo PERFORMÁTICO (MV_OPTNFS = .T.) devemos obrigatoriamente ajustar as LP's alterando os campos macro-executados para o novo apelido "CTBANFS"


(estrela vermelha) Importante: Deve-se obrigatoriamente ajustar o apelido de todos os campos macro-executados das abas Valores, Histórico e Outros para as tabelas SC5, SC6, SB1, SA1, SA2, SF2, SD2 e SF4

(ideia) Observação: Você pode utilizar este mecanismo de performance em conjunto com o MÉTODO 1 (Múltiplas Threads)


MÉTODO 3 →Contabilização por Período / Documento / Dia, qual o mais performático?


          • Na parametrização da contabilização off-line da Nota Fiscal de Saída temos três tipos de parametrização “Por Documento”, “Por período” e “Por Dia”. Identificamos que o tipo “Por Documento” e “Por Dia” utilizam muito acesso a disco do CTREE/ADS que pode gerar uma pequena queda na performance. Recomendamos a utilização da opção “Por Período” que possui maior desempenho no processamento de grandes volumes de contabilização.


MÉTODO 4 →Revisão nas sequencias de contabilização

Um fator que diminui a performance da rotina CTBANFS e a alta quantidade de "Sequencias (CT5_SEQUEN)" para um mesmo lançamento padrão, por isso recomendamos que a quantidade não ultrapasse 10 sequencias.

 

Pode lhe interessar:

Caso deseje executar o trace de rastreamento para a rotina CTBANFS recomendo a leitura da página abaixo:

http://tdn.totvs.com/pages/viewpage.action?pageId=243638663

 

O parâmetro MV_CTBCATH e amplamente utilizado para otimizar as rotinas de contabilidade, por isso recomendo a leitura da página abaixo:FAT0100 - Como habilitar e gerar o LogProfiler para avaliação de desempenho (trace para rotinas ADVPL)

Parâmetro MV_CTBCACH - Performance Contabil