Visual Basic Foro

Programación => Bases de Datos => Mensaje iniciado por: pedroesca en Febrero 29, 2012, 09:58:13 am

Título: Compactación de la Base de Datos
Publicado por: pedroesca en Febrero 29, 2012, 09:58:13 am
Una consulta, pero seguramente me sacarán de la duda y nunca mas la tendré: en Firebird ya no existe ni es necesario efectuar una "COMPACTACIÓN" de la base de datos??????????



Nota: He editado tu mensaje publicado en el post de Yvan. Si tienes dudas aperturas un post y luego te responderemos. Un abrazo. Saludos  ;) atte: ssccaann43
Título: Re:Compactación de la Base de Datos
Publicado por: pedroesca en Febrero 29, 2012, 04:38:30 pm
jeje genial querido Scann
Título: Re:Compactación de la Base de Datos
Publicado por: YAcosta en Febrero 29, 2012, 05:32:01 pm
¿No entendí??? me pase de chelas ¿cual post mio?

Bueno, respondiendo a Pedro, primero ¿Que significa la compactación? me imagino que te refieres a Access y es que ello sucede cuando borras registros en Access, este los marca pero siguen alli acumulándose, cuando compactas se borran esos registro... explicado mejor no lo borra, la accion de compactado crea una nueva base de datos y mete alli todos los registros no marcados como borrados, luego borra la Bd vieja y renombra la Bd nueva con el nombre de la Bd vieja, da la ilusión de que compacto.
Bueno, Firebird (imagino como los demás motores serios) gestiona mejor ese tema, no espera a que exista un compactado, cuando marca un registro como borrado en la siguiente grabación utiliza ese espacio.
Claro que esta acción lo puedes hacer de inmediato cuando haces un backup y luego restore de la BD.

El cliente mas grande que tengo (alrededor de 40 instancias contra la BD) tiene en el sistema la acción de backup automático todos los dias, pero no restaura porque no va siendo necesario y ya van 2 años, es solo una cuestión de estar protegidos. La bd crece dinámicamente, dicho en términos de Access: Jamas requirió un compactado.

:-)
Título: Re:Compactación de la Base de Datos
Publicado por: pedroesca en Febrero 29, 2012, 06:42:26 pm
"Lo sospeché desde un principio" Yvan, resumiendo, me dices que entonces lo que comunmente conocemos como COMPACTACIÓN ya no tiene lugar cuando hablamos de un motor de base de datos real ?!?!?!?
Título: Re:Compactación de la Base de Datos
Publicado por: YAcosta en Febrero 29, 2012, 11:35:42 pm
A ver, la respuesta corta: Compactar en el sentido de Access no tiene lugar, no existe, en los motores serios, pero aclaro, en el sentido de Access.

Que sucede, que los motores serios, Firebird (lo pongo primero solo por esta vez), SQL Server, Oracle, Teradata, etc gestionan ellos mismos este tema.

Doc, Jet Engine que es el motor de Access es un motor muy básico, no le puedes pedir mucho, los motores serios son mas sofisticados, ellos mismos gestionan varios temas, no solo reutilizan esos espacios marcados como borrados, también regeneran los indices, resguardan la integridad de la información, etc etc..., en conclusión lo mejoran, y a eso le llaman: Optimización (suena mas bonito no?)
Por cierto que también son susceptible a daños, los problemillas se puedan dar sobre Windows, sobre Linux el riesgo es menor, claro que si quieres un ejemplo a prueba de balas tendríamos que irnos a los sistema AS-400 con base de datos DB2, es mas probable que se joda el servidor y no la BD. je

Concluyendo toda esta parlada. Compactación no existe en motores serios, pero eso no quita que cada tiempo por un mejor desempeño le metas tu Optimizada. En el caso de Firebird es usando el Gbak para backupear y restaurar.

Saludos



Título: Re:Compactación de la Base de Datos
Publicado por: seba123neo en Febrero 29, 2012, 11:38:57 pm
bueno que yo sepa por ejemplo el mantenimiento en motores de base de datos cambia, SQL Server tiene lo que se llama "Shrink" (no existe la compactación como en Access), pero si existe la funcion COMPACT en SQL Server Compact Edition (la que usan los telefonos con windows mobile) y esa hace lo mismo que hace en Access.

este "Shrink" en SQL Server simplemente lo que hace es reducir el tamaño del archivo de log de una base de datos, recordemos que en SQL Server una base de datos esta formado por el archivo principal de la base (de extension .mdf) y el archivo de log con el mismo nombre (con extension .ldf), el log lo que hace es guardar un historial de las transacciones realizadas en la base de datos, aumentando cada ves mas el espacio hasta tamaños increibles, es mas hace poco un cliente de nuestra empresa tenia este archivo en 45 GB  8).

en MySQL tambien existen unos comandos que se podrian llamar como "compactar", ya que reducen el tamaño de las tablas.

en casi todos los motores debe haber algo para hacer estas cosas, pero por mi experiencia no tuve nunca que hacer nada de lo anterior en las bases.

saludos.