Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-02-2009
Byfed Byfed is offline
Miembro
 
Registrado: oct 2006
Posts: 18
Poder: 0
Byfed Va por buen camino
problema de velocidad con mysql y delphi 6

Hola a todos,

Estoy corrigiendo una aplicación que tira contra una base de datos mysql (5.0.16-nt) que hacía uso de componentes Ttable. Al principio la aplicación funcionaba bien, pero a medida que las tablas han ido creciendo se ha ido haciendo cada vez más lenta, hasta dejarla inútil por completo.

Pues bien, he modificado el código para que no utilice esos componentes y se traiga la información que se necesite en cada momento mediante Tqueries. Además, he añadido algunas funcionalidades nuevas, lo que me ha llevado a modificar la base de datos.

Al final, trabajando sobre esa base de datos modificada (la llamaremos B) obtuve un funcionamiento razonablemente bueno. Originalmente era una versión "liviana" de la base de datos real (que será A). Vamos, que eliminé registros para que no hubiera tantos y tal y sobre esa versión ligera hice modificaciones.

Cuando estaba satisfecho con el resultado, me dispuse a probar el programa sobre A en lugar de B, para lo que he tenido que hacer las mismas modificaciones que hice en B. He puesto especial cuidado en crear todas las tablas nuevas, y en crear los campos nuevos allá donde hacía falta y replicar todos los índices que había en B.

Pues bien, ahora, cuando abro el proyecto de delphi en el IDE (delphi6), tarda muchiiiisimo tiempo en abrirse dicho proyecto. Bueno, en realidad no se si tarda mucho o no, porque aún no lo he visto acabar de cargar. Y he llegado a esperar hasta 10 minutos. Al final tengo que cerrarlo todo, porque me echa abajo el equipo.

¿A alguien se le ocurre qué puedo estar haciendo mal? ¿donde mirariaís vosotros si os pasara algo así?.

Datos adicionales:

* DB A (la real)
La mayoría de las tablas son pequeñitas. solo hay dos que me preocupan:
1. la tabla clientes que tiene 3466 registros, pero ocupa la friolera de 1.1Gb (cada cliente tiene varios campos blob donde se meten ficheros y fotos y demás, que se almacenan en la propia base de datos) (me lo encontré así, yo hubiera preferido no hacerlo así, pero bueno).
2. La tabla trabajos, que tiene 10245 registros y ocupa 788 Mb
Cuando uso esta base de datos, ni si quiera me llega a cargar el entorno.

* DB B (versión recortada y modificada de la A)
1. la tabla clientes tiene 1200 registros y ocupa 150 mb aprox.
2. la tabla trabajos tiene unos 5000 registros y ocupa 50 mb aprox.
Con esta versión, el programa va bien.

Pregunta: ¿qué hace el entorno de delphi cuando abres un proyecto que usa mysql? Porque se tira un rato ejecutando consultas (el icono de reloj de arena con sql debajo) que no se de donde salen.

Si podéis ayudarme con esto estaría muy agradecido, porque ya no se por donde mirar.

Gracias y un saludo.
Responder Con Cita
  #2  
Antiguo 03-02-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Posiblemente dejaste los TQuery abiertos (propiedad Active en true) por lo que el IDE intenta cargar todos los registros al momento de abrir el proyecto.

Ahí quizá te sirva editar a mano el dfm del formulario o datamodule donde tengas tus componentes y poner en false esa propiedad. Esto para que puedas abrir el proyecto.

En cuanto a lo demás, el número de registros es muy pequeño como para causar problemas por sí sólo, así que es posible que la bronca esté en todos los campos blob que mencionas. Lo adecuado sería que no selecciones todos los campos en el Query sino sólo los necesarios para identificar un registro, y cuando se requiera el resto de la información para un registro determinado, mandas traer los demás campos.

// Saludos
Responder Con Cita
  #3  
Antiguo 03-02-2009
Byfed Byfed is offline
Miembro
 
Registrado: oct 2006
Posts: 18
Poder: 0
Byfed Va por buen camino
Muchas gracias

Pues mira tu por donde, que no se me había pasado eso. Estoy seguro de que ese es el problema.

También había pensado, para acelerar un poco la carga del programa, hacer que el único formulario que se crease automáticamente fuera el principal y luego ir creándolos según se van llamando.

¿Alguien tendría la amabilidad de ponerme aquí un ejemplo chorra de cómo crear un formulario en tiempo de ejecución?. Lo suyo es que, primero hay que verificar si ya está creado, y si no lo está, crearlo. ¿Sería aplicable lo mismo a los frames?

Roman, gracias miles por la rapidez de tu respuesta. Mañana probaré lo de las queries, pero vamos, que seguro que es eso, porque se me ha pasado por completo. (soy novatillo).

Salu2
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con la velocidad de actualizacion de datos en mi programa Peterman Varios 1 14-06-2007 23:41:20
Problema con Delphi y MySql 5 Besto MySQL 1 29-05-2007 17:33:33
Problema conexión Delphi y MySQL Benito Conexión con bases de datos 3 27-04-2006 22:41:54
Migración Archivos Planos a MySQL - Velocidad samantha jones Conexión con bases de datos 3 19-01-2006 01:25:11
problema con campos date mysql en delphi mcenit MySQL 6 02-09-2004 16:30:52


La franja horaria es GMT +2. Ahora son las 13:14:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi