![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Register | FAQ | Members List | Calendar | Guía de estilo | Search | Today's Posts | Mark Forums Read |
![]() |
|
|
Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
Problemas con memoria al leer BBDD
Hola a todos, llego aquí a ver si me podéis dar algún consejito.
Os cuento un poco mi problema. Tengo una Base de datos bastante extensa (según que tablas contienen entre 50.000 y 350.000 registros) y necesito hacer un servicio que exporte estos registros en JSON para hacer copias de seguridad periodicas. Mi problema es el siguiente, recorro la primera tabla y la segunda y veo que cada vez tarda más en recorrer el bucle for y cuando llega a la tercera tabla la recorre un poco y luego me suelta esto: "Project web.exe raised exception class $C00000005 with message 'access violation at 0x00655bac: read of address 0x000000278". Lo único que hago es leer los registros, los almaceno en un string JSON y escribo en un campo de la base de datos para saber que está procesado y cuando en el JSON hay 1000 registros lo envío y vuelvo a ejecutar el bucle. Uso ADOquery para las conexiones y las consultas. SQL: Code:
sqlStrQUERY := 'SELECT TOP 1000 Campos FROM tabla where procesado is null';
Almacenamiento:
jsonQuery := jsonquery + coma + '{"Codigo": "' + ADOQuery.FieldByName('Codigo').AsString +'",'+{y los demás campos}
Saco el valor del control con una ADOQUERY->select count(*) AS contador from tabla where procesado is null; Code:
Control := adoquery.fieldbyname('contador').toInteger;
//realmente lo convierto a un extend y luego lo trunco y lo vuelvo entero.
Control := trunc(control/1000);
for i=0 to control
begin
//ejecuto las querys
//escribo el valor 1 en el campo procesado de la BBDD.
end;
Ahora se salta las dos primeras tablas porque el campo procesado no es nulo, sin embargo en la tercera tabla me sigue dando el mismo error. Muchas gracias y un saludo. Last edited by Bolox : 16/01/2019 at 15:00. |
|
#2
|
|||
|
|||
|
Ya he identificado el problema. Era un ADOQuery.free para liberar memoria y ver si así ejecutaba más rápido las Querys, os lo dejo por si a alguien le sirve.
Un saludo. |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Leer fichero ini en memoria | oscjae | OOP | 7 | 10/12/2015 01:07 |
| como leer la memoria | cyberagl | Varios | 0 | 14/03/2007 07:22 |
| Como poder leer la memoria de un dispositivo ? | ozrics | OOP | 2 | 03/09/2006 19:43 |
| Leer BBDD de Access en Delphi, pero "ampliamente" | Pandre | Conexión con bases de datos | 2 | 23/01/2004 13:36 |
| Leer direccion de memoria | brandolin | Varios | 8 | 25/09/2003 16:29 |
|