Out of Memory cached updates FIREDAC, clientdataset

Delphi

Firebird

20/09/2014

Ola pessoal ! Estou tentando povoar uma tabela com 2 milhões de registros, mas como uso insert do tquery com cachedupdates, certamente, os dados vao crescendo na memória até acontecer o estouro de memorai. Não existe uma forma de administrar o dados em memória e envia-lo em pacotes, por exemplo, a cada 500.000 registros e assim liberar a memória ? O que acontece no momento é que quando ele chega em 1.500.000 registros, o programa trava com a mensagem out of memory !

att.
Norbelino

Norbelino

Curtidas 0

Respostas

Rafael Cunha

Rafael Cunha

20/09/2014

Post o código que está sendo utilizado para realizar essa operação para que seja possível analisar.
GOSTEI 0
Norbelino

Norbelino

20/09/2014

Boa Noite Rafael ! O código é simples. É um loop, onde arquivos XMLs sao carregados no clientdatset e depois persistidos no banco. O problema é o seguinte: se eu tentar carregar, por exemplo, 1.500.000 registros de venda, por exemplo, no componente clientdataset, ele acaba por provocar um out of memory, pois ele não faz o gerenciamento da memória. Se não tiver enganado, o velho BDE fazia isso, gerenciava os dados entre memória/disco. Voce sabe como ativar alguma opcao em algum componente dataset (tquery, tfdquery, tfdmemtable.... etc.... ) a fim de que ele administre o cache e não consuma toda a memória do windows ?


grato.
GOSTEI 0
Rafael Cunha

Rafael Cunha

20/09/2014

Você irá precisar desses dados em memória após realizar esse processamento.
GOSTEI 0
Norbelino

Norbelino

20/09/2014

Não. A solução que encontrei foi justamente, a cada 400.000 registros, gravar no banco e dar um empydataset na query.
GOSTEI 0
POSTAR