Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/327912/newLayout.css |
Portuguese | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Correção - Consumo de memória elevado em relação à builds anteriores a 20090301
|
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. |