PDA

Ver la Versión Completa : Eliminacion de registros en InterBase


lgarcia
25-09-2012, 16:56:40
Hola:

Tengo una aplicacion instalada que corre sobre Interbase 6.5, la BD tiene registros desde el 2007, lo que esta provocando que tenga un exceso de registros que me esta poniendo la aplicacion superlenta y dado que lo que interesa son solo 6 meses de respaldo. estoy tratando de darle mantenimiento a la BD, porque la aplicacion no tiene esa opcion. Con Deplhi preparar un programita para elliminarle registros a las 2 tablas mas grandes. Los registros supuestamente se eliminan pero el tamano de la BD sigue igual, es que el borrado es como en DBase o es real. Estoy borrando de la siguiente forma:

delete from mensajes where dia>=:fecha1 and dia<=:fecha2


esperando su atenta respuesta

Saludos
Luis Garcia

Casimiro Notevi
25-09-2012, 17:01:28
Poder, puedes borrar así si quieres, pero me asalta una duda ¿cuántos terabytes ocupa la base de datos para que sea lenta?, ¿cuántos trillones de registros tienen esas tablas?.
Te aconsejo que hagas un backup y restore con gbak, hace milagros.
Pero antes desconecta a todo el mundo y haz una copia de la misma.
Después me plantearía cambiar interbase 6.5 (que es de hace ¿12 años?) por firebird.

lgarcia
25-09-2012, 17:50:40
Muchas gracias Casimiro por la rapidez y calidad de la respuesta, La BD lo que tiene son 2 GB pero la aplicacion interactua con mapas y otras cosas, lo que hace que se vuelva lenta, ademas esta montada en una PC normal (P4, WXP y 1GB RAM), por lo que estube pensando que la solucion podia estar en quitarle carga a la BD. En cuanto a la migracion para FireBird no se si sera posible porque no tengo fuentes de la aplicacion. Quisiera que me explicara como es el proceso de backup y restore con Gbak porque es la 1ra vez que interactuo con Interbase y no conozco las herramientas de ese entorno.

Saludos
Luis Garcia

Casimiro Notevi
25-09-2012, 18:48:08
En el directorio de interbase/bin debes tener gbak.exe
Y suponiendo que no hayan cambiado el usuario y la clave.
Y suponiendo que los parámetros de interbase sean los mismos que los de firebird (antiguamente eran iguales y esa versión de interbase es antigua).

Primero de todo tienes que estar total y absolutamente seguro de que no hay nadie conectado a la BD.
Debes abrir una ventana de comandos (la consola).
Haz una copia de la BD (por si acaso) copy labasedatos.gdb labasedatos-copia.gdb
Ahora vamos a trabajar sobre la copia para no tocar la original.
Para hacer backup: gbak -b -t -v -user sysdba -password masterkey labasedatos-copia.gdb labasedatos-copia.gbk
Ahora vamos a restaurar el gbk ya limpio: gbak -r -v -p 8192 -user sysdba -password masterkey labasedatos-copia.gbk labasedatos-limpia.gdb
Bien, si no ha ocurrido ningún error, entonces renombramos la BD original para sustituir por esta nueva que tenemos ya limpia de "basura"
Renombramos la BD original: rename labasedatos.gdb labasedatos-ORIGINAL.gdb
(No recuerdo si el comando para renombrar es "rename", en todo caso lo haces de forma gráfica, botón derecho->Renombrar)
Ya sólo nos queda sustituir: rename labasedatos-limpia.gdb labasedatos.gdb
Todos estos pasos no son necesarios ni se trabaja de este modo normalmente, lo he hecho para que no tengas ningún problema en caso de que algo vaya mal, y puedas dejar todo como estaba antes.

Listo, a probar :)

lgarcia
25-09-2012, 21:23:28
Gracias de nuevo Casmiro, hice una prueba con el Gbak y los resultados fueron muy buenos, la BD de 2 GB la llevo a 365 MB por lo que el rendimiento de la aplicacion mejoro considerablemente.

Saludos
Luis Garcia

Casimiro Notevi
25-09-2012, 22:32:27
Estupendo ^\||/