GARANTIR DESCONTO

Fórum Out of Memory cached updates FIREDAC, clientdataset #492886

20/09/2014

0

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

Responder

Posts

22/09/2014

Rafael Cunha

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

Gostei + 0

24/09/2014

Norbelino

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.
Responder

Gostei + 0

26/09/2014

Rafael Cunha

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

Gostei + 0

04/10/2014

Norbelino

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

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar