PDA

Ver la Versión Completa : achicar base de datos gdb


pmfras
26-07-2005, 21:37:16
como puedo hacer para que los registro que borro, se borren fisicamente y me mantenga la base en su real tamaño. Uso firebird.

vtdeleon
26-07-2005, 21:51:40
Saludos

No estoy completamente seguro, pero creo qque realizando un Commit a la BD se aplicaran los cambios fisicamente
Qeu alguien me corrija:)

jachguate
27-07-2005, 00:04:38
El espacio ocupado por los registros borrados en una BD firebird es reutilizado automáticamente por la base de datos. Esto no ocasiona ningún inconveniente en una base de datos "normal" en producción, pues regularmente son mas los regsitros que se añaden que los que se borran.

Internamente los registros están almacenados en páginas, asociadas a cada objeto de la BD. Así, si un registro ocupa 10 bytes, una página de 4K podrá contener unos 400 registros. La página existirá aún cuando solo almacene 1 registro, y mas importante aún... la página seguirá existiendo aún cuando no almacene ningún registro, marcada como "reutilizable" para cuando el sistema necesite una nueva página.

Así, si tu BD está en producción en estas condiciones "normales", no hay por que preocuparse. En cambio si ha sufrido un borrado masivo de datos o hay algun otro motivo por el cual querras ver reducido su tamaño, podes hacer un backup y luego un restore, con lo que ocupará el mínimo necesario.

Por otro lado, el rendimiento de la base de datos es tan bueno con 10 páginas como con 10,000 o 100,000, o las que tenga, a menos que tengas un disco duro muy lento o viejo.

Saludos.

Casimiro Notevi
27-07-2005, 00:16:48
Además de que una base de datos "llena" por completo es más lenta al insertar nuevos datos porque tiene que hacer una llamada al sistema operativo para incrementar el tamaño en una página más y luego insertar los datos.
Sin embargo, si tiene espacio desocupado porque se haya borrado algo, usará ese espacio y se ahorrará de aumentar el tamaño de la misma.
Esto es algo que leí de los consejos de borland en relación con interbase. Creo que el ejemplo era más o menos de que se insertara una cantidad enorme de registros en un campo blob y luego se eliminaran esos datos, por lo que al final resultaba una base de datos muy grande pero que estaba casi vacía con una cantidad enorme de espacio sin usar.

rastafarey
28-07-2005, 22:31:25
Tu pregunta tiene facil respuesta.

Has bakup y restore. Eso libera el esapcio maracado como disponible.

Y veriosnes de registros dejado por transaciones en el limbo