• Sábado 9 de Noviembre de 2024, 03:43

Autor Tema:  Re: ¿Que signigica "compactar" una base de datos?  (Leído 3785 veces)

soco1980

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: ¿Que signigica "compactar" una base de datos?
« en: Lunes 15 de Septiembre de 2003, 19:28 »
0
Muchas gracias.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: ¿Que signigica "compactar" una base de datos?
« Respuesta #1 en: Lunes 15 de Septiembre de 2003, 19:36 »
0
Eliminas el espacio asignado a objetos que ya no existen, a registros que has eliminado, elimina objetos temporales, etc, etc. El resultado es que la base de datos ocupa menos, Esto lo vas a notar sobre todo si la bd nunca ha sido compactada y cuenta con un elevado número de movimientos en registros.

Suerte.

soco1980

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: ¿Que signigica "compactar" una base de datos?
« Respuesta #2 en: Lunes 15 de Septiembre de 2003, 19:39 »
0
Muchas gracias por la respuesta, lo has dejado bien aclarado.

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: ¿Que signigica "compactar" una base de datos?
« Respuesta #3 en: Lunes 15 de Septiembre de 2003, 19:43 »
0
Basicamente el compactado tiene que ver con la eliminacion definitiva de registros eliminados.

Veras... cuando desde tu aplicacion le indicas al motor que elimine registros de la Base de Datos, estos mismos no son eliminados fisicamente, sino que simplemente son marcados como eliminados para que no sean tenidos en cuenta en consultas posteriores.

Compactar la Base de Datos seria quitar esos registros marcados para de esa manera "compactar" la BD y que pese menos.

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: ¿Que signigica "compactar" una base de datos?
« Respuesta #4 en: Lunes 15 de Septiembre de 2003, 21:46 »
0
Mira, soco1980:

Esa misma pregunta tuya, que en principio parece una obviedad, la he escuchado varias veces a personas que saben suficientemente de informática, pero que siempre hay algún detallito que se escapa...

Además de estar totalmente de acuerdo con lo que te han aportado, quiero añadir que

1º.-  para compactarla tiene que estar cerrada la base de datos. y

2º.- que el hecho de desaparecer físicamente los registros previamente borrados, te va a permitir que se aprovechen los autonuméricos eliminados.  Porque cuando borras el registro 12 (por ejemplo) aunque sólo te quedan 11, el próximo registro será el 13... si el Id es autonumérico (por aquello de que en realidad NO SE BORRÓ, sino que se marcó para ser borrado...).  Claro, nunca vas a recuperar nada más que los autonuméricos que fueran ÚLTIMO REGISTRO.

Bueno, ahora a esperar que otro te complemente la información, porque ya ves que aquí nos pegamos por dar...

Saludos

soco1980

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: ¿Que signigica "compactar" una base de datos?
« Respuesta #5 en: Martes 16 de Septiembre de 2003, 00:03 »
0
En principio muchas gracias a todos por todas las respuestas recibidas, y enhorabuena por haber tanta gente como vosotros.

En segundo lugar, me ha parecido muy interesante la ultima respuesta recibida, ya que yo en mi base de datos tengo una clave principal autonumerica, y claro, cada vez que borro un registro, ese numero nunca mas es vuelto a usar, con la consiguiente perdida intuitiva de ordenacion.

Si lo he entendido bien (corrijanme si me equivoco), al compactar la base de datos esos numeros son reajustados con lo cual son usados todos sin excepcion en orden ascendente.

Y por otra parte (corrijanme si vuelvo a equivocarme), yo soy administrador de sistemas, con lo cual "quiero" asociar la compactacion de una base de datos haciendo similitud con un archivo que es borrado logicamente (que no fisicamente) del disco duro, sobre el cual se le ha realizado posteriormente una defragmentacion, con lo cual ha habido una ordenacion y una mejora del acceso al disco duro (permitiendome la similitud con la mas rápida y mejor ordenacion de una base de datos)

Muchas gracias nuevamente, un saludo.

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: ¿Que signigica "compactar" una base de datos?
« Respuesta #6 en: Martes 16 de Septiembre de 2003, 00:10 »
0
Me parece que entendiste mal al profesor Movilla.

Primero - La compactacion te permite re-usar los ultimos datos autonumericos borrados, o sea que si tienes lo siguiente

campo Autonumerico con valor

1
2
3  Marcado para borrar
4
5
6
7
8 Marcado para borrar

luego de la compactacion te quedara lo siguiente...

1
2
4
5
6
7
 
y el proximo disponible sera el nro.8 y no el nro 3. ( el nro.3 lo pierdes ).

Segundo
te hiciste un embrollo con la segunda parte. simplemente esa Bd que tienes pesara menos porque se le borraran fisicamente los registros que estaban marcados para su borrado.

Espero que te quede un poco mas claro

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: ¿Que signigica "compactar" una base de datos?
« Respuesta #7 en: Martes 16 de Septiembre de 2003, 00:11 »
0
Recuerda que SOLO SE RECUPERA EL REGISTRO ÚLTIMO... No se reorganizan los autonuméricos intermedios... Esto sirve fundamentalmente para el caso de que hagas un append (addnew) y te arrepientas antes de añadir otro registro... En ese caso podrás borrarlo y recuperar su hueco compactando la bd.  Por supuesto se recuperarán los registros asociados a ese número en otras tablas, siempre que los hayas borrado también (como es natural...)

Lo otro, renumerar, no es posible con autonuméricos.

Saludos

Pd.-  Veo que Chiaravel te ha dado contestación un segundo antes que yo... Porque él es más rápido y más ágil... Con 40 años menos... ya podrá...

soco1980

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: ¿Que signigica "compactar" una base de datos?
« Respuesta #8 en: Miércoles 17 de Septiembre de 2003, 12:43 »
0
Gracias por aclararmelo, ya le he pillado el hilillo a la cuestion, y vaya, mi gozo en un pozo, porque crei justo todo lo contrario, que compactando, lo registros vacios de claves autonumericas se autoordenaban si dejar espacios.

Muchas gracias, un saludo.

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: ¿Que signigica "compactar" una base de datos?
« Respuesta #9 en: Miércoles 17 de Septiembre de 2003, 17:28 »
0
Si te interesa mucho el evitar que haya fallos en el campo autonumérico (cosa que en principio no debe darte mala sangre... porque el Id sólo tiene que servir para lo que es, correlacionar una tabla principal con otras derivadas...) puedes insertar una llamada a la función en que hagas el compactado (cerrando previamente la bd y reabriéndola después, recuperando los punteros...) detrás de la instrucción de borrar el último registro, que es el que habitualmente tiene más probabilidades de ser eliminado.  

Pero insisto en que no te hagas mala sangre con ver saltos en el campo autonumérico; no lo presentes nunca en pantalla; para sustituirle muestra un contador, ¿no te parece?

¿Tú te imaginas la que armabas si tuvieras que ir disminuyendo el Id en todas las tablas desde el registro vacío hasta el fin de fichero, y volver a buscar otro registro vacío y vuelta a disminuir el Id a todas las tablas...?  Además de la pérdida de tiempo... Dios mío si a mitad de camino te quedas sin fluído energético...  Y todo porque no te gusta ver saltos en los códigos...  Anda y que le den morcilla... ¿no te parece?

soco1980

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
¿Que signigica "compactar" una base de datos?
« Respuesta #10 en: Miércoles 17 de Septiembre de 2003, 20:53 »
0
Pues si que es buena idea poner un contador, pero yo lo que he echo ha sido poner directamente como clave principal el DNI y asi me evito el autonumerico, eso si, ahora me replanteare la cuestion con el uso del contador, muchas gracias.