Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Crecimiento excesivo (https://www.clubdelphi.com/foros/showthread.php?t=41051)

jsanchez 06-03-2007 19:02:22

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

DarKraZY 06-03-2007 19:09:04

¿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!!

jsanchez 06-03-2007 19:12:39

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

jsanchez 06-03-2007 19:16:45

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

DarKraZY 07-03-2007 00:42:18

Aunque creo que sí, la mejor forma de saberlo es probarlo ;)

RONPABLO 07-03-2007 01:33:14

Si al crear y borrar la tabla sigue creciendo pruebe con crear y borrar una tabla externa.

DarKraZY 07-03-2007 10:09:26

Cita:

Empezado por RONPABLO
borrar una tabla externa.

Por curiosidad, RONPABLO, ¿qué es una tabla externa en Firebird?

RONPABLO 07-03-2007 16:19:36

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)

DarKraZY 07-03-2007 17:02:32

Muchas gracias RONPABLO por aclararme la duda ;)

rastafarey 07-03-2007 18:29:46

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.

jsanchez 07-03-2007 20:14:21

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

RONPABLO 07-03-2007 21:21:01

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

jsanchez 07-03-2007 21:37:49

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

RONPABLO 07-03-2007 22:18:16

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

jsanchez 07-03-2007 23:10:07

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?

TJose 07-03-2007 23:24:01

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

jsanchez 07-03-2007 23:32:14

el sql que has puesto está igual que el otro, que es lo que faltaria?

gracias

TJose 08-03-2007 02:17:44

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)

RONPABLO 08-03-2007 16:40:26

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 :D

jsanchez 08-03-2007 17:03:21

estoy utilizando los BDE, que componente utilizaria?


La franja horaria es GMT +2. Ahora son las 06:41:29.

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