** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Tamaño base / velocidad
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoTamaño base / velocidad

 Responder Responder
Autor
Mensaje
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje Tema: Tamaño base / velocidad
    Enviado: 03/Abril/2020 a las 20:28
Veamos si me se explicar:

En un entorno font-end en red

Cual seria el ideal en peso para el font?

Realmente que es lo hace pesar una base?

Que es lo que la hace relentizarse?


En mi caso, no manejo imagenes,  las 2 o 3 que utilizo son vinculadas, es cierto que suelo meter mucho codigo en los formularios (ya que no me gustan las consultas y las evito siempre que puedo)
y sube a 10mb (que no se si es mucho ) y me doy cuenta que a medida que ha ido creciendo tambien va mas lento en la carga de los formularios.

consejos pra aprender?


PD: tengo puesto el compactar al salir
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 03/Abril/2020 a las 20:55
Hola,

Empecemos por el final: quitar compactar al salir. ¿Porqué? Pues porque, en una base medianamente bien hecha, el crecimiento de la misma será pequeño y no es algo necesario. Además existe un escenario en el cuál es una mala idea. 
Imagina que tu base de datos está abierta y al ordenador le da por actualizarse. Al cerrarse la base de datos el sistema realizará la compactación. Si el ordenador llega a apagarse antes de que ese proceso termine, probablemente te quedarás con una base de datos inconsistente.

Repasemos cosas que hacen engordar una base de datos:
- utilización de imágenes incrustadas
- tablas temporales en la propia base de datos

Imágenes. La solución a las imágenes para evitar al máximo el incremento de peso es vincularlas. Tenerlas incrustadas es un "engorde" excesivo. Existe una posibilidad intermedia que es utilizar las imágenes compartidas. Esas imágenes se almacenan en una tabla MSysResources y se van reutilizando en toda la base de datos. 
Yo utilizo las imágenes compartidas. Además "reutilizo" la tabla MsysResources para meterle mas "cosas" a la aplicación (pero esa es otra historia)

Tablas temporales. En ocasiones nos vemos en la necesidad de crear una tabla temporal, llenarla de datos, hacer cálculos y, finalmente, extraer unos datos para incorporarlos al BackEnd. Después borramos la tabla. Cuando hacemos ese proceso Access se "expande" para dar cabida a la nueva tabla y sus registros. Pero al borrar la tabla no se "contrae". De ahí la utilización de Compactar y reparar.
¿Solución en esos casos? Yo he optado por crear una base de datos temporal (en local), crear una tabla con CREATE TABLE y vincularla a mi aplicación. Hago las operaciones necesarias y, al terminar, borro la vinculación y elimino la base de datos temporal del disco.

Otra forma de engordar una base de datos se produce durante el desarrollo. En ese momento copiamos objetos, creamos controles, los borramos, metemos código, lo limpiamos, etc. Todas esas acciones pueden hacer aumentar el tamaño. Compactando al salir se soluciona.

Una vez me encontré con una de mis aplicaciones cuyo FrontEnd habia llegado a los 80Mb. Estuve buscando largo tiempo para saber porque era tan grande cuando, a priori, no deberia ser así. Primero descubrí que tenia una tabla oculta que "pesaba" 10 Mb (una tabla con todas las oficinas bancarias de España de antes de la reestructuración... un montón)
Como aun quedaba pesada me hice una utilidad para extraer todos los objetos de la aplicación a archivos individuales. Eso me hizo ver un formulario que pesaba 5 Mb. Al ir a verlo era el formulario de inicio con una imagen incrustada de 4Mb.

Para que veas que existen diferentes motivos para que engorde.

En cuanto a la ralentización, pueden haber varias causas:
- estado de la red. No es lo mismo la pequeña oficina que algunos clientes con servidores en Alemania
- tipo de acceso a datos. Las aperturas de recordsets son más importantes de lo que parece. Una buena utilización de los parámetros nos agiliza el acceso a los datos
- tamaño del conjunto de datos. Si filtramos los conjunto de datos serán menos pesados y las rápidos de manejar
- cantidad de usuarios. Diferentes usuarios accediendo a los datos pueden ralentizar el acceso
- bloqueos de registro. El tipo de bloqueo en los formularios puede afectar.
- tipo de backend. Tengo un cliente con unos problemas gravisimos de acceso a datos con un backend Access situado en un servidor en Alemania. Lo pasamos a SharePoint y vuela.

Mis aplicaciones (hablamos de aplicaciones medianamente complejas con >30000 lineas de código) oscilan entre 30 y 50Mb. Alguna llega a los 80Mb (pero también tiene > 100000 lineas y un montón de objetos)

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4812
Enlace directo a este mensaje Enviado: 03/Abril/2020 a las 23:48
Mas tips.....


PARA LA VELOCIDAD
En general diría que la optimización de la Velocidad de una aplicación te lo da la experiencia en la programación y con los años en VBA puedes escribir mejor código (en teoría) y ganar en velocidad de ejecución en muchos programas ya que cada linea de código o instrucción es importante y afecta en la velocidad.

Aqui encontraras  +100 Tips para mejorar la Velocidad







Si con todo esto No mejoras la Velocidad es hora de cambiar de Ordenador al final es lo mas rápido de implementar ..........



PARA EL TAMAÑO
Creo que es mas fácil de controlar teniendo un mínimo de cuidado , compactar antes de llevar la base a producción, mejor hacer una exportación de todos los objetos a una base nueva (vacía) cuanto este lista para producción, crear alguna rutina de auto-compactacion que controle el propio tamaño de a base, evitar tablas locales en su lugar usar siempre tablas vinculadas, evitar imágenes incrustadas, evitar iconos importados en su lugar usar iconos nativos de Access, repetición de datos redundantes etc..... etc....


Una manera "aproximada" de optimar los formularios sería utilizando el método SaveAsText del objeto Application. Este método exporta los objetos del formulario de Access a un fichero de texto y podrias analizar el Tamaño de los mismos ,........  idem para Reports

Dim obj As AccessObject

    For Each obj In CurrentProject.AllForms
        Application.SaveAsText acForm, obj.Name, CurrentProject.Path & "\" & obj.Name & ".txt"
    Next



En fin es un tema demasiado amplio para ponerlo todo en un simple post , lastima que Microsoft Access haya borrado todos sus enlaces antiguos sobre temas relacionados a la optimización de la Velocidad y del Tamaño de las Bases sin posibilidad de localizarlos ahora ,.....

 

Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje Enviado: 07/Abril/2020 a las 20:00
Gracias por la infoormacion, lo estoy leyendo detalladamente, porque creo que es superior a mis conocimientos.

En mi caso, casi todo lo que hago es por el simple gusto de ir aprendiendo cosas y normalmente realizo alguna pequeña aplicacion para ayudar a amiguetes que piden cosillas. No me dedico a esto profesionalmente ya que lo mio es el harware, montage y mantenimiento de redes.

Aprendi hace tiempo algo de Vb, llegando a ello desde dbaseIII.

en cuanto a Sharepoint, he estado tentado de montarlo en casa para hacer pruebas alguna vez, pero lo veo muy complicado para el uso que le voy a dar y me da pereza.

Repito muchas gracias por los consejos, los pondre en practica (dentro de mis posibilidades)

Podeis cerrar el hilo satisfactoriamente


Editado por 01loko - 07/Abril/2020 a las 20:01
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 1258
Enlace directo a este mensaje Enviado: 09/Abril/2020 a las 12:37
Hola
Ya metidos en esto, a mi me ocurre que por el mero hecho de revincular las tablas a otra mdb ya crece un monton la aplicacion.
¿Como Solucionarlo?
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4812
Enlace directo a este mensaje Enviado: 09/Abril/2020 a las 18:32
La solucion general para el 99% de casos es

1- Crear una Base Nueva vacia y limpia de referencias / librerias extras (solo las standard)
2- Importar desde la recien creada base vacia todos los objetos
3- Vincular tablas externas
4- Hacer un DEBUG del código
5- Compactar base

Si tienes mas dudas deberías abrir un hilo nuevo ......


 


Editado por javier.mil - 09/Abril/2020 a las 19:48
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 807
Enlace directo a este mensaje Enviado: 12/Abril/2020 a las 12:13
Como ya dije hace unos dias, si no hay novedades, podeis cerrar el hilo satisfactoriamente.





Recordar de que soy nuevo y estoy aprendiendo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable