Fórum Lentidão ClienteDataset #403895
28/06/2011
0
Terminei o desenvolvimento do SPED, e usei o clientdataset para cada tipo de registro, ja que preciso totalizar por varias formas. Mas o que acontece que o clientedataset apos ter + de 5 mil registros, fica extremamente lento. Ele processa 5 mil registros em 1 minuto, e o restante por exemplo 10 mil em 2 horas.
Como eu desenvolvi.
Tenho um SQLQUERY, com todas as notas, fiz um while lendo esse sqlquery e jogando dentro do clientedataset. Como preciso totalizar no clientedataset, tenho que dar locate ou findkey para saber se ja existe o registro antes de incluir novamente. Sei que fica lento quando aumenta os dados, mas no final de tudo, o clientedataset tem 7 mil registros isso seria muito pra algo na memoria? Ja criei indices, pela mesma condição do findkey, e ainda lento.
Obrigado..
Rodrigo.
Rodrigo Santos
Curtir tópico
+ 0Posts
28/06/2011
Rafael Mattos
Gostei + 0
28/06/2011
Rodrigo Santos
Tem algo a ver com a memoria usada?
Rodrigo
Gostei + 0
28/06/2011
Rafael Mattos
Tem algo a ver com a memoria usada?
Rodrigo
Gostei + 0
28/06/2011
Pjrm1470
Me corrijam se eu estiver enganado, mas deixe a propriedade FetchOnDemand como True. E define a quantidade de pacote que será carregado na propriedade PacketRecords.
Dessa forma o seu CDS so vai ocupar espaço na memoria que for realmente usado.
Abraço e boa sorte.
Gostei + 0
28/06/2011
Rodrigo Santos
Grato.
Gostei + 0
28/06/2011
Rodrigo Santos
Descobri o problema fazendo testes , e venho compartilhar com voces. Como não uso banco de dados com o clientedataset o mesmo ficando somente para tabela temporaria, preciso alterar diversas vezes o registro para totalizar, então uso o EDIT. Analisando o edit, ele salva todas modificacoes no dataset , para enviar ao provider. Como eu nunca uso o Applyupdate pois nao estou conectado ao BD, ele vai pesando.
Solução:
TClienteDataset1.Logchanges = false; Aviso ele para não salvar as modificações.
Tempo: 3 horas p/ 29 minutos e 13 segundos.
Rodrigo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)