Histórico da Página
...
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. Observações
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
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" 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 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?
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.br/pages/releaseview.action?pageId=6068392 Parâmetro MV_CTBCACH -- 114141 | ||||||||||||||||||||
Importante: | 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 na tabela CT2. Esse procedimento é utilizado para evitar reprocessamento indevidos de movimentos já avaliados pela rotina. |