Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-09-2006
atani123 atani123 is offline
Miembro
 
Registrado: jul 2006
Posts: 63
Poder: 18
atani123 Va por buen camino
Sigo peleando con interbase

Tengo una aplicacion que continuamente esta grabando informacion, aproximadamente 1 registro compuesto de unos 30 enteros cada minuto.
La aplicacion no se reinicializa nunca, es decir el pc esta encendido dias y dias con este proceso. Cuando cambia de dia los registros del dia anterior son borrados automaticamente.

Mi problema es el siguiente, ya expuesto en otro hilo sin encontrar solucion, La base de datos me llega a alcanzar 2GB en un par de dias, donde me dice que tengo 133548 paginas reservadas. De las que luego al hacer un backup y restore se me queda en 200 mas o menos. Existe alguna forma de eliminar estas paginas no usadas de una forma rapida. Podria realizar un backup/restore, pero el proceso que realiza el pc es muy critico, cada minuto exacto. No puedo entretenerlo mas de 20 seg.

No se que hacer
Responder Con Cita
  #2  
Antiguo 06-09-2006
tulio tulio is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 303
Poder: 22
tulio Va por buen camino
Hola

te comento como hago algo parecido en SQL Server, en una situacion parecida a la que comentas, en vez de borrar los registros con delete ....
uso el comando truncate table, que te borra de raiz los registros .
No se si este comando esta en Interbases, seria bueno saberlo

saludos

tulio
Responder Con Cita
  #3  
Antiguo 06-09-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por atani123
Tengo una aplicacion que continuamente esta grabando informacion, aproximadamente 1 registro compuesto de unos 30 enteros cada minuto.
La aplicacion no se reinicializa nunca, es decir el pc esta encendido dias y dias con este proceso. Cuando cambia de dia los registros del dia anterior son borrados automaticamente.

Mi problema es el siguiente, ya expuesto en otro hilo sin encontrar solucion, La base de datos me llega a alcanzar 2GB en un par de dias, donde me dice que tengo 133548 paginas reservadas. De las que luego al hacer un backup y restore se me queda en 200 mas o menos. Existe alguna forma de eliminar estas paginas no usadas de una forma rapida. Podria realizar un backup/restore, pero el proceso que realiza el pc es muy critico, cada minuto exacto. No puedo entretenerlo mas de 20 seg.

No se que hacer
La única forma de eliminarlas es haciendo un backup/restore.

Lo que te ocurre está provocado por el sistema de "multiversión" que usa interbase/firebird, llamado: "Arquitectura multigeneracional (MGA)", cada vez que insertas, modificas, etc cualquier registro, siempre se crea una copia (una versión del mismo) para el caso que luego hagas rollback o por si otro usuario está accediendo al mismo registro, etc. Esto permite un sistema multiusuario total sin los problemas de bloqueos que provocan otros sistemas de bases de datos.
Te recomiendo que leas el informe sobre transacciones del compañero Juan José Rodríguez.

Lo que cuentas ahora no es lo mismo que comentabas en el otro hilo, que por cierto, algún moderador te aconsejará que hubieses seguido el otro hilo en lugar de iniciar este nuevo. Pues lo que te comentaba: en el otro hilo decías que así porque sí, se ponía la base de datos a crear registros y no paraba hasta tener cientos de megas, algo que no tenía sentido y había sido el problema que he estado intentando resolver estos días contigo. Sin embargo, ahora dices que poco a poco, al cabo de los días, la base de datos ha aumentado de tamaño, o sea, no de golpe, como comentabas en el otro hilo.
Son dos cosas muy distintas, en el primer caso denota un problema, fallo o error de programación que inserta multitud de registros en plan "bestia". Lo que explicas en este hilo es, simplemente, normal.

Bueno, de todas formas, a lo que iba: si la base de datos va bien, responde bien, funciona correctamente, ¿qué importancia tiene que ocupe 2 gigas?.
Puedes seguir trabajando tranquilamente, haciendo backups online, no hay problema (precisamente gracias al sistema multigeneracional del que hablamos).

Si el problema es otro o si simplemente no te gusta que ocupe mucho la base de datos... entonces me temo que tendrás que cambiar a otra o inventar algún sistema de tablas temporales en memoria que se actualice cada cierto tiempo mientras se hace un backup/restore de la base de datos, etc.

En fin, que habría que estudiar a fondo el caso y conocer toda la problemática de la empresa para poder llegar a la solución adecuada.

Ya nos comentarás y perdona el "rollo" que he escrito
Responder Con Cita
  #4  
Antiguo 06-09-2006
atani123 atani123 is offline
Miembro
 
Registrado: jul 2006
Posts: 63
Poder: 18
atani123 Va por buen camino
No, Casimiro, me debo haber explicado mal.

En ningun momento la base de datos inserta registros porque si. Pero si que aumenta el tamaño de forma desproporcional y de un registro para otro.

Como comentaba voy insertando registros aprox. 1 cada minuto 1200 diarios, con muy poca informacion. Cada vez que inserto un registro sale una ventanita que pone "grabando datos", vale pues cuando lleva aprox 2 dias, la ventana esta se queda fija en pantalla, el codigo es algo asi:

frmventana.show
tabla.post
frmventana.hide

Entonces a traves del explorador miro la base de datos y su tamaño es desproporcional a la informacion que contiene (no es que tenga miles de registros, tendra aprox unos 2400). Unas veces me dice 500 MB otras 1,2 GB otras 2GB, cuando minutos antes su tamaño era correcto, unos 30 Mb.

Cierro la aplicacion a las bravas, compacto la base de datos y me la deja en eso unos 30 Mb, continua con el proceso y a los 2 dias lo mismo.
Responder Con Cita
  #5  
Antiguo 06-09-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por cierto, ¿tienes habilitada escritura asíncrona?, prueba a cambiarla a síncrona, para que no lo almacene en la "cache´" y escriba directamente los datos a disco, así, en teoría debería de ir aumentando de tamaño la base de datos poco a poco, en lugar de cuando se llena la "caché" que lo graba todo de golpe.

Código:
/opt/firebird/bin/gfix -write  sync -user SYSDBA -password masterkey /home/datos/basedatos.fdb
Responder Con Cita
  #6  
Antiguo 06-09-2006
MrDominoTk MrDominoTk is offline
Registrado
 
Registrado: jun 2005
Posts: 9
Poder: 0
MrDominoTk Va por buen camino
Esquivar el problema

Lo que se me ocurre, es que tengas 365 Base de datos, es decir 1 para cada dia. y ademas tener Otra BD maestra con aglutine datos al finalizar cada dia. una vez traspasado el dia anterior la borras.

Salu2 desde Chile.




Cita:
Empezado por Casimiro Notevi
Por cierto, ¿tienes habilitada escritura asíncrona?, prueba a cambiarla a síncrona, para que no lo almacene en la "cache´" y escriba directamente los datos a disco, así, en teoría debería de ir aumentando de tamaño la base de datos poco a poco, en lugar de cuando se llena la "caché" que lo graba todo de golpe.

Código:
/opt/firebird/bin/gfix -write  sync -user SYSDBA -password masterkey /home/datos/basedatos.fdb
Responder Con Cita
  #7  
Antiguo 06-09-2006
atani123 atani123 is offline
Miembro
 
Registrado: jul 2006
Posts: 63
Poder: 18
atani123 Va por buen camino
  1. ¿Solamente ocurren inserciones o también ocurren actualizaciones de registros?
No ocurren inserciones ni actualizacion. Yo soy quien inserta registros, solamente 1 por minuto, no se modifica nada.
  1. ¿la base de datos tiene una sola tabla?
Tiene varias tablas, nada del otro mundo, alrededor de 12 tablas, pero solo se inserta en una, las demas son maestras.
  1. ¿cuantos índices?
Aprox. 3 por tabla.
  1. ¿hay mas usuarios conectados al sistema?
No, trabaja en local, solo se conecta 1 usuario el SYSDBA
  1. ¿hacen modificaciones
No. Esta preparado para poderlas realizar pero es un proceso automatico que solo inserta.

Mas o menos es esto, una estacion meteorologica que registra la temperatura cada minuto. Posteriormente se podra consultar y demas, pero de momento tiene un timer que cada minuto mira el valor de la sonda y lo registra. Despues borra todos los registros en que la fecha < fecha-2dias.
Responder Con Cita
  #8  
Antiguo 06-09-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
  1. ¿Solamente ocurren inserciones o también ocurren actualizaciones de registros?
  2. ¿la base de datos tiene una sola tabla?
  3. ¿cuantos índices?
  4. ¿hay mas usuarios conectados al sistema?
  5. ¿hacen modificaciones?
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 20:37:53.


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
Copyright 1996-2007 Club Delphi