FoxPro/Visual FoxPro - Memoria insuficiente para asignacion de archivos

 
Vista:

Memoria insuficiente para asignacion de archivos

Publicado por Hiram Victoria (4 intervenciones) el 17/02/2004 19:30:52
Ayuda...Necesito unir tres tablas en una sola, la 1° tiene 1,500,000 reg, la 2° 350,000 reg. y la 3° 1,081,000 reg., he podido unir la 1° y la 2° con el comando APPEND FROM sin ningun problema, al intentar unir la 3° me envia el mensaje: "MEMORIA INSUFICIENTE PARA LA ASIGNACION DE ARCHIVOS" siempre exactamente cuando lleva 79000 registros agregados, ya lo probe en una pc con 256Mb en RAM y lo probe en una con 1Gb en RAM y sucedio lo mismo, la unica diferencia fue que en la segunda se bloqueo sin mandar el mensaje.
El problema es ¿Como las puedo unir para formar una sola?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Memoria insuficiente para asignacion de archivo

Publicado por Raúl (86 intervenciones) el 17/02/2004 21:14:51
Se me ocurren 2 cosas aunque la verdad es que no las he probado:
1- usar la función SYS(1104) para purgar la memoria cache usada por VFP. Esto también podría ser hecho con varios comandos APPEND que vayan cargando rangos de registros... no sé...
2- Usar la función SYS(3050) para aumentar la memoria de primer plano de VFP aunque ya es bastante grande por defecto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Memoria insuficiente para asignacion de archivo

Publicado por Hiram Victoria (4 intervenciones) el 18/02/2004 16:37:25
Primero que nada agradecer tu valioso apoyo a mi problema y comentarte lo siguiente:
Ya probe con la función SYS(3050) y efectivamente por default muestra una configuración con numeros muy grandes, probe tambien con CLEAR MEMORY y continua el mismo error.
Probe tambien con SYS(1104) y nada, continua.
Encontré algo sobre que el problema podria ser por el proceso de paginación. pero no le he encontrado como configurar para probar. Cualquier otra idea que pudiera funcionar se las agradeceré..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Memoria insuficiente para asignacion de archivo

Publicado por Roman Suazo (2723 intervenciones) el 18/02/2004 17:11:05
Prueba lo siguiente une la primera tabla con la segunda, cierra la segunda tabla y
despues unes la tercera (la abres hasta ese preciso momento). La segunda tabla es bastante grande y puede ser que este consumiendo mucha memoria innecesariamente. El chiste es que cierres las tablas que no necesites en el proceso , tambien el chiste es que no abras tablas mientras no las necesites (por ejemplo, la tercera mientras se une las dos primeras). Se que suena simple y logico, pero hay veces que la gente no se fija en ese pequeños detalles, hay una forma de asignar memoria en VFP, por lo momentos no me acuerdo el nombre de la funcion. si no te funcioan lo que te digo, buscare entonces la funcion.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ojo, con este detalle

Publicado por Roman Suazo (2723 intervenciones) el 18/02/2004 17:20:07
Las tablas en Fox tiene limite en cuanto a su tamaño (2 gigas), checa que no se este
rompiendo ese limite. Otro, checa el comando PACK, para asi reducir el tamaño de las
tablas. Ejecutalo en copias de las tablas originales, para si no correr el riesgo de arruinar las tablas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ojo, con este detalle

Publicado por Hiram Victoria (4 intervenciones) el 18/02/2004 17:44:19
Gracias Roman, cheque el tamaño de mi tabla y efectivamente esta al borde de los 2 gigas,entiendo entonces que al intentar introducir la 3° tabla llega al limite, ¿pudiera existir alguna forma de modificar ese limite?.
La situación es que tenemos un PRG que valida la informacion de las tablas mencionadas y las compara entre ellas para conocer cuantos registros son unicos o aptos para alimentar otra BD, y verificar cuantos registros estan con datos incompletos y cuantos pudieran ser corregidos, el hacerlo en varias tablas es tedioso, por ello se busca unirlas en una sola tabla. ¿Que otra sugerencia nos podrian dar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ojo, con este detalle

Publicado por Roman Suazo (2723 intervenciones) el 18/02/2004 18:35:52
Ok, no entiendo muy bien lo que hacen o para que quieren unir las tablas, lo que entiendo es que unen las tablas para hacer determinada busqueda.

Primero, si alguna de la tablas hasta al borde de llegar a los dos gigas, mejor ir pensando en hacer un upgrade...

Si solo es para la busqueda de datos seguramente no ocupas todos los campos de las tablas, tal vez unos pocos, por lo tanto no ocupas el APPEND, sino mas bien un selec con la clausula UNION , donde el resultado se guardara en un cursor (tabla temporal).
En el SELECT SOLO pon los campos necesarios asi el tamaño del cursor sera dramaticamente mas pequeño, el SELEC en este caso hara la tarea mas rapido que con el APPEND.

Me cuentas como sale el resultado or por que no te funcionaria mi solucion.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Memoria insuficiente para asignacion de archivo

Publicado por hiram victoria (4 intervenciones) el 18/02/2004 17:20:17
Gracias por su ayuda.
Ya lo probe de esa forma, las dos primeras tablas ya se encuentran unidas, la unica tabla que abro es la unida y la que voy a agregar, no tengo nada mas en uso dentro de fox, incluso cierro los demas programas, siendo entonces lo unico abierto en la pc VFP con la tabla unida y la que esta agregando, y nada mas. aun asi al llegar al registro 2,056,978 me manda el mensaje.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar