Histórico da Página
...
- Visão Geral
- Identificação
- Fluxograma
- Possíveis Soluções
- Changequery;
- FWPreparedStatement;
- Changequery;
- Gráfico
01. Visão Geral
Identificado baixa performance na Estudo para propor uma melhoria na performance da rotina de Apuração de resultado(CTBA211).
02.Identificação
Identificado pelo log enviado que a demora ocorre pelo numero de chamadas que tem o changequey da rotina Analisando o log de um dos nossos clientes, identificamos que ocorre lentidão no processo de Apuração de Resultados, devido à quantidade de chamadas da função changequery desde a função SALDOCQ.
Na Apuração de Resultados essa a função changequery é chamada para realizar a gravação do gravar:
- o arquivo temporário
...
- cada tipo de moeda
...
- o tipo de saldo
...
- as contas contábeis
...
03. Fluxograma
Aviso | ||
---|---|---|
| ||
|
...
04. Possíveis Soluções
a. Troca da função Changequery
Poderá ser retirado o changequery Retirar a função changequery, realizando tratamento na montagem da query para utilizar o comando correto específico para cada banco (SQL, Oracle, Postgres, DB2). Assim executando executará a query diretamente.
Os comando que devem ser utilizados são:
- Informex e Oraacle = NVL
- Postgres e DB2 = COALESCE
- SQL = ISNULL
b. Uso da função b. FWPreparedStatement
A função FWPreparedStatement representa um comando SQL pré compilado.
Para utilizá-lo corretamente nesse caso seria é necessário alterar todas as chamadas das origens SALDOCT(X) assim passaria a query correta e destruiria apos o fim da utilização da origem.
Aviso | ||
---|---|---|
| ||
Realizei um teste Em testes, alterando os parâmetros na montagem da query e chamando o PreparedStatement ele funciona porem não eh FWPreparedStatement, funciona porém não da maneira correta por que toda a vez que , já que ao chamar a função SALDOCQ ele está criando a query e destruindo-a, assim o que não sendo constitui a melhor praticaprática. |
Como utilizar - FWPreparedStatement
...
05. Gráfico
Segue a baixo gráfico em tempo do log local com as duas possibilidadessegundos para as possíveis soluções.
*Log tirado em uma base local com 29.607 registro de lançamento contábil.
HTML |
---|
<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |