FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#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: Código:
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; Código:
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. Última edición por Bolox fecha: 16-01-2019 a las 15:00:48. |
#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. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Leer fichero ini en memoria | oscjae | OOP | 7 | 10-12-2015 01:07:22 |
como leer la memoria | cyberagl | Varios | 0 | 14-03-2007 07:22:56 |
Como poder leer la memoria de un dispositivo ? | ozrics | OOP | 2 | 03-09-2006 19:43:50 |
Leer BBDD de Access en Delphi, pero "ampliamente" | Pandre | Conexión con bases de datos | 2 | 23-01-2004 13:36:56 |
Leer direccion de memoria | brandolin | Varios | 8 | 25-09-2003 16:29:22 |
|