Á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 dos documentos 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: 

1-Você pode utilizar este mecanismo de performance em conjunto com o MÉTODO 1 (Múltiplas Threads).

2-Se os Lançamentos Padrões OFF-LINE foram definidos para tratar o ALIAS “CTBANFS” os mesmos não poderão ser utilizados em um processo de contabilização ON-LINE.


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 é amplamente utilizado para otimizar as rotinas de contabilidade, por isso recomendo a leitura da página abaixo:

http://tdn.totvs.com/pages/releaseview.action?pageId=6068392

Criação de campos adicional na tabela CT5 para que seja replicado o conteúdo nas tabelas CT2 e CTK

https://centraldeatendimento.totvs.com/hc/pt-br/articles/360043003714-MP-SIGACTB-CTBA105-Alimentar-campos-adicionais-na-tabela-CT2-atrav%C3%A9s-das-Integra%C3%A7%C3%B5es-Cont%C3%A1beis

Importante:

(aviso) Ao executar a rotina de processamento "Contabilização Off-Line - CTBANFS" para contabilizar os movimentos Vendas o campo F2_DTLANC SEMPRE será atualizado com sua data de processamento, mesmo que não seja gerado lançamento

contabil

contábil na tabela CT2. Esse procedimento é utilizado para evitar reprocessamento indevidos de movimentos já avaliados pela rotina.

(aviso) Se optar pelo uso de múltiplas threads pra melhoria de performance, não poderá trabalhar com uso schedule  para contabilização. A rotina de contabilização via faturamento, CTBANFS, só funciona via schedule, caso ela não esteja configurada para utilizar múltiplas threads.