![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
El problema del commit es que me cierra la base de datos.
|
|
#2
|
||||
|
||||
|
El commit no cierra la base de datos. Si usas IBX, te cierra los datasets asociados, comportamiento normal de interbase/firebird, y defecto de las IBX, que lo dejan todo crudo, tal cual es.
Sin embargo, para las tablas lookups, podes tener otra transaccion de solo lectura, por ejemplo, y una transacción para el insert. Por otro lado, haciendolo con un TibSQL, como te sugerí antes, no hay nada que cerrar, pues este se ejecuta y listo. ![]() Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#3
|
|||
|
|||
|
Atencion, mas informacion he puesto esta parte de codigo.
Resumo, lo que hace es mirar el tamaño de la base de datos antes del commitretaining, despues lo ejecuta y vuelve a mirar el tamaño. Luego almacena los tamaños en un fichero txt. Y este es el fichero obtenido despues de varias grabaciones. Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040050688 = Incremento : 000000000000 Antes: 000040050688 -> Despues: 000040058880 = Incremento : 000000008192 Antes: 000040058880 -> Despues: 000041844736 = Incremento : 000001785856 Antes: 000041844736 -> Despues: 000043622400 = Incremento : 000001777664 Antes: 000043622400 -> Despues: 000045404160 = Incremento : 000001781760 Antes: 000045404160 -> Despues: 000047181824 = Incremento : 000001777664 Antes: 000047181824 -> Despues: 000048963584 = Incremento : 000001781760 Antes: 000048963584 -> Despues: 000050741248 = Incremento : 000001777664 Antes: 000050741248 -> Despues: 000052523008 = Incremento : 000001781760 Antes: 000052523008 -> Despues: 000054300672 = Incremento : 000001777664 Antes: 000054300672 -> Despues: 000056082432 = Incremento : 000001781760 Antes: 000056082432 -> Despues: 000057860096 = Incremento : 000001777664 Antes: 000057860096 -> Despues: 000059641856 = Incremento : 000001781760 Antes: 000059641856 -> Despues: 000061419520 = Incremento : 000001777664 Antes: 000061419520 -> Despues: 000063201280 = Incremento : 000001781760 Antes: 000063201280 -> Despues: 000064978944 = Incremento : 000001777664 Antes: 000064978944 -> Despues: 000066760704 = Incremento : 000001781760 Antes: 000066760704 -> Despues: 000068538368 = Incremento : 000001777664 Antes: 000068538368 -> Despues: 000070320128 = Incremento : 000001781760 Antes: 000072101888 -> Despues: 000072101888 = Incremento : 000000000000 Antes: 000072101888 -> Despues: 000073883648 = Incremento : 000001781760 Antes: 000073883648 -> Despues: 000075665408 = Incremento : 000001781760 Antes: 000075665408 -> Despues: 000077447168 = Incremento : 000001781760 Antes: 000077447168 -> Despues: 000079224832 = Incremento : 000001777664 Antes: 000079224832 -> Despues: 000081006592 = Incremento : 000001781760 Antes: 000081006592 -> Despues: 000082788352 = Incremento : 000001781760 Antes: 000082788352 -> Despues: 000084570112 = Incremento : 000001781760 Antes del commitretaining se realiza el post de 3 tablas. He probado a eliminar 2 y dejar solamente un post y el resultado es el mismo, solo que al principio en vez de haber n registros que no incrementan tamaño han habido n*3 registros que no incrementan. Luego todo igual. Última edición por dec fecha: 12-09-2006 a las 10:34:43. |
|
#4
|
||||
|
||||
|
Ahora vemos que la base de datos no crece de tajo... como se había creido al principio.
Sigo creyendo que el commit retaining tiene algo que ver en este caso... pero no logro imaginar cómo, suponiendo que tenes un tamaño de página de 4K, el sistema se dispara 436 páginas solamente después de insertar 3 registros. Si no queres hacer cambios en el commit, yo probaría poniendo un tamaño de página mas pequeño... quizas eso ayude. Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#5
|
|||
|
|||
|
He podido descubrir mas cosas.
Uno de los registro que graba supongamos que tiene la siguiente estructura Numero, Blob, Blob, etc campos. Pues hacia lo siguiente Tabla.edit; tabla[ 'Numero'] := tabla[ 'Numero'] + 1; Tabla.Post; Hace las inserciones en otros ficheros. Realiza el commitretaining. Pues he comentado la primera parte donde incrementa un contador, y no ha vuelto a pasar. Todo funciona ok. Resulta que los campos blob uno es una hoja excel y el otro un grafico bmp, que bien bien podrian ocupar esas 460 paginas * 4096 bytes. El problema sigo diciendo que es un bug de interbase, (aunque de todas formas debo reconocer que la programacion no es correcta. Tambien decir que yo jamas lo hubiera hecho asi, pero mi antecesor lo dejo asi y yo solo modifico lo que no funciona) Bug de interbase, da la sensacion de que crea un registro nuevo para cada Edit que se realiza. Despues de realizar 200 edits, la base de datos tiene un tamaño impresionante y cuando realmente se realizar un commit (cerramos la base de datos) graba la ultima modificacion y todo lo demas es en blanco. No se, que opinais? |
|
#6
|
||||
|
||||
|
Cita:
Cita:
¿a que te referís con "cada edit que se realiza"? Tengo la sensación que no nos has contado realmente como funciona el proceso... Cita:
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#7
|
|||
|
|||
|
Tienes razon, me equivoque al dar toda la informacion. Resulta que hay una tabla con dos blob uno es un excel y el otro un grafico.
Se realiza un bucle donde lo que se hace es modificar un campo numerico de la tabla citada y a parte añadir 3 o 4 registros en otra tabla. Al final del bucle se realiza el commitretaining. Lo que no entiendo es el incremento. Ya que la tabla con el registro grande no se añade nada, unicamente se modifica. ¿Hay alguna explicacion para esto? |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Con que sigo? | serfap | Varios | 6 | 12-06-2006 18:02:58 |
| Sigo con problemas con los indices | Antuan | Tablas planas | 6 | 10-10-2005 20:52:11 |
| sigo con MDI | pablo | OOP | 2 | 27-02-2005 17:42:15 |
| Sigo con mis preguntitas!!! | Critter | Varios | 1 | 15-12-2004 21:44:05 |
| sigo con la duda ? | saps | Conexión con bases de datos | 1 | 28-08-2003 11:22:27 |
|