Árvore de páginas

Correção - Consumo de memória elevado em relação à builds anteriores a 20090301

Esta build contém uma correção, relacionada à utilização de memória por tabela aberta, reproduzida para qualquer banco de dados, nas plataformas Windows e/ou Linux.

Abrangência ERP 10

Situação

Utilização do TOTVS DBAccess, com build igual ou superior a 20090301, para acesso a um banco de dados, onde a partir da build 20090301 foi implementado um cache de statement preparado para leitura de registros das tabelas, dando a aplicação ganhos significativos de performance.
 

Ocorrência

O uso do cache de statements preparados teve efeitos significativos em relação a ganho de performance em leitura de registros. Porém, foi constatado que a aplicação passa a consumir o dobro de memória por tabela aberta em relação a build anteiror. Em alguns ambientes, a excessiva alocação de memória apresentou efeitos colaterais, como alguns momentos de queda de performance no TOTVSDBAccess e, em outro casos, o TOTVSDBAccess não conseguia alocar mais memória, apresentando ocorrências de erro -88 - Invalid memo field len, quando a aplicação AdvPL tentava ler um campo "Memo" do TOTVSDBAccess, seguidas de ocorrências de "Memory full".
 

Correção

A partir da build 20090304, o uso de cache de statements preparado possui um engine automático de limpeza e recriação de cache on-demand, para evitar o consumo excessivo de memória mantendo statements em cache para tabelas que não estão sendo efetivamente utilizadas naquele momento.

Quando um determinado processo/conexão do TOTVSDBAccess permanece em IDLE (aguardando uma solicitação do sistema Microsiga Protheus) por mais de 10 segundos, o cache de statements desta conexão são eliminados da memória para todas as tabelas abertas nesta conexão. Desta forma, quando o produto Microsiga Protheus solicitar uma operação de leitura de registros para uma ou mais tabelas, os caches para cada tabela envolvida serão recriados on-demand, sendo limpos novamente apenas quando a conexão permanecer 10 segundos em IDLE.
 

Informação adicional

Com este controle de validade do cache, os ganhos de performance constatados foram mantidos, com uma melhora significativa no consumo de memória pela aplicação TOTVSDBAccess.

  • Sem rótulos