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'; 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; 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. |
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. |
La franja horaria es GMT +2. Ahora son las 08:25:03. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi