¿Por qué debería preocuparme por compactar un archivo .mdb de MS Access?

StackOverflow https://stackoverflow.com/questions/74484

  •  09-06-2019
  •  | 
  •  

Pregunta

Distribuimos una aplicación que utiliza un archivo .mdb de MS Access.Alguien ha notado que después de abrir el archivo en MS Access, el tamaño del archivo se reduce mucho.Eso sugiere que el archivo es un buen candidato para la compactación, pero no proporcionamos los medios para que nuestros usuarios lo hagan.

Entonces mi pregunta es ¿importa?¿Nos importa?¿Qué cosas malas pueden pasar si nuestros usuarios nunca compactan la base de datos?

¿Fue útil?

Solución

Además de hacer que su base de datos sea más pequeña, volverá a calcular los índices de sus tablas y las desfragmentará, lo que puede acelerar el acceso.También encontrará inconsistencias que nunca deberían ocurrir en su base de datos, pero que podrían ocurrir debido a errores o fallas en Access.

Sin embargo, no está totalmente exento de riesgos: un error en Access 2007 ocasionalmente eliminaría su base de datos durante el proceso.

Por lo tanto, en general es algo bueno, pero combínalo con una buena rutina de respaldo.Con la copia de seguridad implementada, también puede recuperarse de cualquier compacto "irrecuperable" y reparar problemas con una pérdida mínima de datos.

Otros consejos

Asegúrese de compactar y reparar la base de datos con regularidad, especialmente si la aplicación de base de datos experimenta frecuentes actualizaciones, eliminaciones e inserciones de registros.Esto no sólo mantendrá el tamaño del archivo de la base de datos al mínimo, lo que ayudará a acelerar las operaciones de la base de datos y las comunicaciones de red, sino que también realizará el mantenimiento de la base de datos, lo que es aún más beneficioso para la estabilidad de sus datos.Pero antes de compactar la base de datos, asegúrese de hacer una copia de seguridad del archivo, en caso de que algo salga mal con la compactación.

Jet compacta una base de datos para reorganizar el contenido del archivo de modo que cada "página" de 4 KB (2 KB para Access 95/97) de espacio asignado para datos, tablas o índices esté ubicada en un área contigua.Jet recupera el espacio de los registros marcados como eliminados y reescribe los registros en cada tabla en orden de clave principal, como un índice agrupado.Esto hará que las operaciones de lectura/escritura de su base de datos sean más rápidas.

Jet también actualiza las estadísticas de la tabla durante la compactación.Esto incluye identificar la cantidad de registros en cada tabla, lo que permitirá a Jet usar el método más óptimo para buscar registros, ya sea usando los índices o usando un escaneo completo de la tabla cuando hay pocos registros.Después de la compactación, ejecute cada consulta almacenada para que Jet la vuelva a optimizar utilizando estas estadísticas de tabla actualizadas, lo que puede mejorar el rendimiento de la consulta.

Los Access 2000, 2002, 2003 y 2007 combinan la compactación con una operación de reparación si es necesario.El proceso de reparación:

1 - Limpia transacciones incompletas

2 - Compara datos en tablas del sistema con datos en tablas reales, consultas e índices y repara los errores

3 - Repara errores de estructura de datos muy simples, como punteros perdidos a registros de varias páginas (lo cual no siempre tiene éxito y es por eso que "reparar" no siempre funciona para guardar una base de datos de Access dañada)

4 - Reemplaza la información faltante sobre la estructura de un proyecto VBA

5 - Reemplaza la información faltante necesaria para abrir un formulario, informe y módulo

6 - Repara errores simples de estructura de objetos en formularios, informes y módulos

Lo malo que puede suceder si los usuarios nunca compactan/reparan la base de datos es que se volverá lenta debido a la hinchazón y puede volverse inestable, es decir, corrupta.

Compactar una base de datos de Access (también conocida como base de datos MS JET) es un poco como desfragmentar un disco duro.Access (o, más exactamente, el motor de base de datos MS JET) no es muy bueno con la reutilización del espacio, por lo que cuando se actualiza, inserta o elimina un registro, el espacio no siempre se recupera; en cambio, se agrega nuevo espacio a al final del archivo de base de datos y se utiliza en su lugar.

Una regla general es que si su base de datos [Access] se escribirá (actualizará, cambiará o agregará), debe permitir la compactación; de lo contrario, voluntad crecer en tamaño (mucho más que solo los datos que ha agregado también).

Entonces, para responder a su(s) pregunta(s):

  • Sí, sí importa (a menos que su base de datos sea de sólo lectura).
  • Debería importarte (a menos que no preocuparse por el espacio en disco de su usuario).
  • Si no compacta una base de datos de Access, con el tiempo crecerá muchísimo más de lo que sugerirían los datos que contiene, lo que ralentizará el rendimiento y aumentará las posibilidades de errores y corrupción.(Como base de datos basada en archivos, los archivos de bases de datos de Access son conocidos por su corrupción, especialmente cuando se accede a ellos a través de una red).

Este artículo sobre Cómo compactar la base de datos de Microsoft Access a través de ADO le dará un buen punto de partida si decide agregar esta funcionalidad a su aplicación.

Ofrecería a los usuarios un método para compactar la base de datos.He visto bases de datos crecer a más de 600 megabytes cuando la compactación se reduce a 60-80.

Para hacer eco de Nate:En versiones anteriores, he tenido bases de datos corruptas, por lo que es esencial un buen régimen de copia de seguridad.No codificaría nada en su aplicación para hacerlo automáticamente.Sin embargo, si un cliente descubre que su base de datos funciona muy lenta, su personal de soporte técnico podría informarle si es necesario (con las copias de seguridad adecuadas, por supuesto).

Sin embargo, si su base de datos se está volviendo tan grande que la compactación comienza a convertirse en una necesidad, tal vez sea hora de pasar a MS-SQL.

Si no ofrece a sus usuarios una forma de descomprimir y, para empezar, el tamaño sin formato no es un problema, entonces no se moleste.

Descubrí que los archivos de bases de datos de Access casi siempre se corrompen con el tiempo.Compactarlos y repararlos ayuda a retrasarlo por un tiempo.

Bueno, ¡realmente importa!Los archivos mdb siguen aumentando de tamaño cada vez que manipula sus datos, hasta que alcanzan un tamaño insoportable.Pero no es necesario que proporcione un método de compactación a través de su interfaz.Puede agregar el siguiente código en su archivo mdb para compactarlo cada vez que se cierra el archivo:

Aplicación.SetOption ("Auto compacto"), 1

Quisiera también altamente recomiendo buscar en VistaDB (http://www.vistadb.net/) o SQL compacto (http://www.microsoft.com/sql/editions/compact/) para su aplicación.Es posible que estos no sean los adecuados para su aplicación...pero definitivamente vale la pena echarle un vistazo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top