Ver Mensaje Individual
  #1  
Antiguo 07-05-2008
Avatar de juanmdq
juanmdq juanmdq is offline
Miembro
 
Registrado: dic 2004
Posts: 52
Reputación: 20
juanmdq Va por buen camino
Question ClientDataSet perdida de performance

Hola amigos del club.
Utilizando Delphi 7 y Oracle me ocurrió la siguiente interrogante cuando realizaba un proceso de importacion de archivo ascii a una tabla temporal plana, es decir, lo único que tiene la tabla es un campo 'renglon' de tipo varchar2 sin indices ni nada de nada.
Para el algoritmo utilizo un timer para actualizar un reloj y un thread que es el encargado de recorrer el ascii y cada cierta cantidad de renglones enviarlo a oracle.
El programa es +/- asi:
Código:
      AbrirArchivo(txt);
      dmDataModule.cdsArchivo.DisableControls;
      dmDataModule.cdsArchivo.Open;
      nrolinea := 0;
      while (not eof(txt)) and (not terminar) do
      begin
         nrolinea := nrolinea + 1;
         readln(txt, line);

         dmDataModule.cdsArchivo.Insert;
         dmDataModule.cdsArchivoRENGLON.AsString := line;
         dmDataModule.cdsArchivo.Post;

         if (nrolinea mod 1500) = 0 then
            dmDataModule.cdsArchivo.ApplyUpdates(-1);
      end;
      dmDataModule.cdsArchivo.Close;
Cuando importo archivos chicos, por ej. de 4MB el programa funciona genial, lo realiza bastante rapido.
Ahora bien, cuando intento importar un archivo de 180 MB se arrastra cual tortuga caminando en barro. Lo extraño es que arranca joya pero cada vez le cuesta mas completar los porcentajes, por ejemplo, del 1% al 2% lo hace en 1 min. el 9% al 10% lo hace en 2min. y asi va perdiendo en performance de forma bastante alarmante.

¿ Alguien tiene idea de a que se puede deber esto ?

Desde ya muchas gracias !
__________________
Al infierno se llega por atajos.
Responder Con Cita