Histórico da Página
REGERAR SALDOS E CUSTOS - MELHORIA DE PERFORMANCE
Características do Requisito
Linha de Produto: | RM | ||||
Segmento: | Construção e Projetos | ||||
Módulo: | Gestão de Estoque, Compras e Faturamento. | ||||
Rotina: |
| ||||
Chamados Relacionados | TTKHBJ | ||||
País(es): | Brasil | ||||
Banco(s) de Dados: | SQL e Oracle | ||||
Tabelas Utilizadas: | TRELSLD | ||||
Sistema(s) Operacional(is): | Windows |
Descrição
Estamos implementando a partir das versões 11.82.43 e 12.1.10 do TOTVS Gestão de Estoque, Compras e Faturamento uma considerável melhoria de performance no processo "Regerar Saldos e Custos".
Anteriormente este processo trabalhava apenas de forma sequencial, ou seja, era regerado um produto de cada vez não importando qual era a capacidade do servidor de aplicação e do banco de dados.
A partir de agora a execução deste processo poderá ser paralelizada, ou seja, poderão ser regerados N produtos de uma só vez e o seu tempo de cálculo estará diretamente relacionado ao poder de processamento do ambiente onde o mesmo está sendo executado, ou seja, quanto mais processadores e memória possuir o servidor de aplicação, mais produtos serão calculados simultaneamente e consequentemente muito menos tempo levará o processo. Entretanto, é importante salientar que a execução em paralelo irá exigir mais do servidor de banco de dados, já que cada cálculo abre uma conexão.
Assim, caso o ambiente não esteja dimensionado adequadamente é possível que ao executar o cálculo de forma paralela sejam exibidas mensagens de "timeout" se o Banco de Dados estiver sobrecarregado, ou de "timeout no connection pool" no Oracle se o número de conexões simultâneas ultrapassar o pré-estabelecido. Deverão ser observados ainda, outros gargalos como o tráfego de rede e outros processos concorrentes, principalmente em bases Oracle, onde por padrão existe um número limitado de conexões simultâneas.
Recomendamos que antes que o processo seja executado, o seu servidor de banco de dados seja analisado e dimensionado corretamente para absorver todas as requisições paralelas e poder utilizar o ganho de performance proporcionado por este recurso.
Procedimento para Utilização
Após a atualização da versão 11.82.43 ou da versão 12.1.10, ao ser acessado o TOTVS Gestão de Estoque, Compras e Faturamento por um usuário que seja Supervisor, o sistema apresentará a mensagem abaixo, informando sobre a existência da nova forma de execução do processo "Regerar Saldos e Custos":
Para executar este processo com paralelismo vá em "Estoque > Processos > Regerar Saldos e Custos".
Na primeira tela clique em "Avançar".
Na tela de "Seleção de Produtos" informe os dados dos produtos cujos saldos e custos serão regerados e clique em "Avançar".
Na tela de "Parâmetros Gerais" do processo marque o campo 'Execução Paralela', além dos demais parâmetros habitualmente utilizados por sua empresa na Regeração de Saldos e Custos.
Ao passar o mouse sobre o checkbox do campo o sistema apresentará ao usuário uma dica acerca da função do campo e sobre o seu consumo de recursos:
Ao ser selecionada a Execução Paralela o sistema habilitará um símbolo de alerta.
Passando o mouse sobre o alerta o sistema irá informar o usuário sobre o maior consumo de recursos do banco de dados que a Execução Paralela exige.
Dica | ||
---|---|---|
| ||
A Execução Paralela também pode ser utilizada caso o processo "Regerar Saldos e Custos" seja executado através de agendamento. |
Fórmulas
Um grande ofensor no processo de regeração de saldos e custos é a utilização de fórmulas complexas ou que demandam informações onde o sistema precisa realizar consulta na base de dados para obter o resultado. Com isso, criamos uma função de fórmula chamada "TABITMREG". Esta função de fórmula possui comportamento semelhante ao da "TABITM", porém quando é utilizada durante o processo de regeração, o valor retornado vem direto da memória, não sendo necessário consulta ao banco de dados, melhorando consideravelmente a performance.
Exemplo de utilização:
A fórmula "KQT * KPU" pode ser substituída pela fórmula "TABITMREG('QUANTIDADE','V') * TABITMREG('PRECOUNITARIO','V')".
Ou TABITM ('VALORTOTALITEM', 'V') por TABITMREG ('VALORTOTALITEM' , 'V').
Em testes realizados, esta alteração da fórmula foi a que demonstrou melhor ganho de performance.
Insert em Lotes
A partir da versão 12.1.25, foi criado o parâmetro Número de Registros por Lote. Ele é utilizado no processo de Regeração de Saldos e Custos para definir a quantidade de registros a ser inserida no banco a cada atualização. Por default o parâmetro é definido com o valor de 20.000, mas é possível informar valores entre 1 e 30.000. Este valor pode gerar erro de TimeOut ao inserir os registros se o mesmo tiver muito elevado para o SGBD, por isso é necessário atentar para este parâmetro que esta em Definições de Estoque e se necessário diminuir o valor.
Otimize seu ambiente e configure o seu SGDB para que sua empresa esteja apta a realizar a Regeração de Saldos e Custos de forma paralela e possa desfrutar do enorme ganho de performance que é proporcionado por esse recurso.
Informações | ||
---|---|---|
| ||
<add key="DBSConnStrExtensions" value=";Min Pool Size=5;Max Pool Size=30;" /> Onde o min pool size deve ser aumentado de forma a comportar o uso regular, e o Max pool size deve ser aumentado de forma a contemplar situações de uso elevado. O valor a ser colocado no parâmetro deve ser determinado preferencialmente por alguém da T.I. em conjunto com o DBA da empresa. |