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-03-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
Crecimiento excesivo

Hola foro,

Utilizo FireBird 1.5, y en uno de los procesos del sistema tengo una tabla temporal, que se llena con una información y posteriormente esa información se utiliza para imprimirla, haciendo inner joins con otras tablas de datos generales. Cada vez que se hace este proceso, primero se borra la tabla temporal, y luego se llena con la nueva información generada por el proceso. El caso es que la base de datos está teniendo un crecimiento excesivo, no hay alguna manera de que esa información no la tenga que meter en la base de datos?, el problema que se me plantea es que esa información de la tabla temporal la necesito en una consulta con tablas existentes en la base de datos.

muchas gracias
Responder Con Cita
  #2  
Antiguo 06-03-2007
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
¿Cuánto es excesivo?
Tengo entendido que Interbase/Firebird expanden su tamaño en disco duro para así poder realizar mejor sus operaciones. Por eso cuando se realiza un backup y restore por defecto la base de datos ocupa menos tamaño en disco.
No sé si será esto y te pueda servir de ayuda.

Saludos!!
Responder Con Cita
  #3  
Antiguo 06-03-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
excesivo son unos 15 Mb por día, cuando la tasa de crecimiento diario sin este proceso es de 1Mb, a lo sumo.

efectivamente, ya probé, que si se hace un backup y restore, baja el tamaño dramaticamente, pero la idea no es hacer eso diariamente o semanalmente
Responder Con Cita
  #4  
Antiguo 06-03-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
otra pregunta,
si en tiempo de ejecución se crea la tabla en la base de datos, y después se le hace un "drop", firebird sigue dejando el "espacio" en la base de datos?

gracias
Responder Con Cita
  #5  
Antiguo 07-03-2007
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Aunque creo que sí, la mejor forma de saberlo es probarlo
Responder Con Cita
  #6  
Antiguo 07-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Si al crear y borrar la tabla sigue creciendo pruebe con crear y borrar una tabla externa.
Responder Con Cita
  #7  
Antiguo 07-03-2007
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Cita:
Empezado por RONPABLO
borrar una tabla externa.
Por curiosidad, RONPABLO, ¿qué es una tabla externa en Firebird?
Responder Con Cita
  #8  
Antiguo 07-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
una tabla externa es una tabla en un archivo de texto, es de solo lectura, por lo tanto no se le puede hacer delte o update, solo consultar... pero si se le puede hacer drop (con lo cual se borrar el archivo) y al ser un archivo por fuera de la aplicacion no debe de afectar el tamanno de de la bd como tal (creo yo... no lo afirmo)
Responder Con Cita
  #9  
Antiguo 07-03-2007
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Muchas gracias RONPABLO por aclararme la duda
Responder Con Cita
  #10  
Antiguo 07-03-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Pudes usar un proceso que haga limpieza la base de datos al final del dia ya que se mantienen todos los cmbios qu ehacen en la base de datos.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #11  
Antiguo 07-03-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
gracias por las respuestas

yo creo que el problema con las tablas externas sería que después de llenarla necesito hacer consultas con esa tabla y con alguna interna.

con respecto a lo de correr el el proceso te refieres backup y restore, o se puede utilizar algun otro que no haya que estar con tratamiento de archivos de la base de datos?

muchas gracias
Responder Con Cita
  #12  
Antiguo 07-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Cita:
yo creo que el problema con las tablas externas sería que después de llenarla necesito hacer consultas con esa tabla y con alguna interna.
el hecho de que la tabla sea externa no quiere decir que este por fuera de la bd, en si se puede hacer querys anidados con otras tablas (joins y subconsultas) algo asi como

Código SQL [-]
select a.nobre, b.codigo from tablaExterna a inner join tabla interna b on b.enlace = a.enlace
Responder Con Cita
  #13  
Antiguo 07-03-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
entonces el concepto de tabla externa que yo tengo es distinto al tuyo, me puedes explicar un poco más en detalle como se crearía la tabla externa desde el codigo delphi y como se haría la consulta, también desde delphi?

muchas gracias por la ayuda
Responder Con Cita
  #14  
Antiguo 07-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Código SQL [-]
Recreate Table Citasxpersona
External File 'c:\archivos De Programa\firebird\firebird_1_5\bin\bdrips\citasxpersona.txt'
(
  Codigo                   Char(    50)  Collate None,
  Nombre                  Char(   200)  Collate None,
  Total                     Char(     2)  Collate None,
  Factura                  Char(    20)  Collate None
  cr                          char(    2) DEFAULT '\n' Collate None
);

este código crea una tabla externa (se puede poner en un IBScript o equivalente), ademas debe poner en el archivo firebird.conf la siguiente opción
Cita:
ExternalFileAccess = full
// esto se hace una sola vez en el servidor
recuerda que no se pueden editar y todos los campos deben ser de tipo char

Nota off topic: otra cosa que hago con las tablas externas es usarlas como puente entre 2 o mas bds

Última edición por RONPABLO fecha: 08-03-2007 a las 16:47:03.
Responder Con Cita
  #15  
Antiguo 07-03-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
Realmente todo esto es muy nuevo para mi, y estoy un poco perdido.

he puesto ese texto en TQuery y me da el siguiente error

"Error creating cursor handle"

alguna idea de porqué puede ser?
Responder Con Cita
  #16  
Antiguo 07-03-2007
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
Por RONPABLO:
Código SQL [-]
Recreate Table Citasxpersona
External File 'c:\archivos De Programa\firebird\firebird_1_5\bin\bdrips\citasxpersona.txt'
(
  Codigo                  Char(    50)  Collate None,
  Nombre                  Char(   200)  Collate None,
  Total                   Char(     2)  Collate None,
  Factura                 Char(    20)  Collate None
);

RONPABLO te está faltando el campo para el caracter de retorno

Saludos
TJose
Responder Con Cita
  #17  
Antiguo 07-03-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
el sql que has puesto está igual que el otro, que es lo que faltaria?

gracias
Responder Con Cita
  #18  
Antiguo 08-03-2007
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
solo que falta un campo para almacenar el caracter de retorno o final de linea, debe ser el ultimo campo

en windows

Código SQL [-]
cr char(2)

Código SQL [-]
deberá guardar la cadena '\n'

en *nix

Código SQL [-]
cr char(1)

Última edición por TJose fecha: 08-03-2007 a las 02:19:48.
Responder Con Cita
  #19  
Antiguo 08-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
no se debe de poner en un TQuery, se debe de poner en IBScript ya que el TQuery (o mas bien IBQuery) esta diseñado para Selects, Deletes, Updates, inserts pero en creacion de tablas views o sp o similares pone esos errores...

Que componentes estas usando?? DBE, IBX(Interbase eXpress) o cual otro?

jsanchez gracias por el dato... se ve mucho mejor elarchivo asi

Última edición por RONPABLO fecha: 08-03-2007 a las 16:51:51.
Responder Con Cita
  #20  
Antiguo 08-03-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
estoy utilizando los BDE, que componente utilizaria?
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
Excesivo consumo de memoria 1111111 Firebird e Interbase 11 18-06-2005 23:08:20
Crecimiento anomalo fichero Interbase EL WINDSURFISTA Firebird e Interbase 5 26-11-2003 05:42:41
Crecimiento anomalo fichero Interbase EL WINDSURFISTA Firebird e Interbase 1 31-10-2003 19:52:30


La franja horaria es GMT +2. Ahora son las 12:05:56.


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