Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

bbdd MySQL ciudades del mundo. Problema

Estas en el tema de bbdd MySQL ciudades del mundo. Problema en el foro de Bases de Datos General en Foros del Web. Hola, mirad tengo una base de datos con las ciudades del mundo, la bbdd pesa unos 60MB, bien, la base de datos está implantada y ...
  #1 (permalink)  
Antiguo 18/12/2009, 06:16
 
Fecha de Ingreso: febrero-2007
Mensajes: 111
Antigüedad: 17 años, 9 meses
Puntos: 0
bbdd MySQL ciudades del mundo. Problema

Hola, mirad tengo una base de datos con las ciudades del mundo, la bbdd pesa unos 60MB, bien, la base de datos está implantada y sin problemas, el problema está en una aplicación que tengo que primero abre los países, cuando eliges un país, abre las regiones/provincias y cuando pulsas en una región viene el problema y es que tarda mucho en listar las ciudades, la aplicación recoge el id de la región y tiene que mostrar las ciudades, la consulta es simple pero siempre tarda la primera vez que se hace. Si después pulsas en otra provincia ya va rápido. ¿Es que MySQL crea algún tipo de caché? ¿Alguien sabe qué puede ser lo que pasa? Muchas gracias
  #2 (permalink)  
Antiguo 18/12/2009, 06:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: bbdd MySQL ciudades del mundo. Problema

Cita:
¿Es que MySQL crea algún tipo de caché? ¿Alguien sabe qué puede ser lo que pasa? Muchas gracias
Todos los DBMS usan alguan forma de caché de consultas. Es necesario por la complejidad de los procesos y la forma de segmentar los paquetes de datos.
Leer: 5.12. La caché de consultas de MySQL
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 18/12/2009, 07:49
 
Fecha de Ingreso: febrero-2007
Mensajes: 111
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: bbdd MySQL ciudades del mundo. Problema

Gracias por responder, he estado echando un vistazo y no me resuelve mi duda porque según pone ahí las consultas deben ser idénticas y en mi caso no es así, yo pulso en una provincia y tarda mucho, como 20 segundos, y luego pulso en cualquier otra provincia y ya siempre tarda 1 segundo. Cuando reinicio la aplicación igual, la primera vez que pulso tarda un rato y a partir de la segunda no tarda nada.
  #4 (permalink)  
Antiguo 18/12/2009, 08:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: bbdd MySQL ciudades del mundo. Problema

Estás perdiendo el detalle: La igualdad de sentencias no es la única razón por la que una consulta puede ser más o menos rápida, o que una consulta puede ser cacheable. Hay otras múltiples razones.
- La ruta de los paquetes de datos por la web.
- La apertura/cierre de las conexiones impacta directamente en la performance la consulta. Si la primera consulta tiene también que abrir la conexión, será siempre más lenta.
- Los tipos de conexión usados.
- Los índices usados en la consulta.
- El nivel de selectividad de los datos buscados.
- La longitud de los registros y la cantidad de bloques de datos usados por el DBMS.

Para darte una idea mínima:
Código MySQL:
Ver original
  1. SELECT * FROM tabla;
y
Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE campo_no_Id>= unvalor;
donde campo_no_id es un campo común ienen el mismo costo de consulta en cuanto a uso de memoria, accesos a disco y comunicaciones.
Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE campo_no_Id>= unvalor;
donde campo_no_id es clave de índice, puede requerir x/64Kb veces menos de tiempo de búsqueda, siendo x el tamaño en bytes del índice.

Con esto quiero decir que si bien el caché de consultas afecta mucho, más aún afectan las optimizaciones de las consultas, y cuando tu mandas la segunda, a buscar las localidades de una zona de un país específico, es esperable que tarde menos que la consulta de países, porque la primera no está optimizada por PK y la segunda si...

Eso sin contar con los problemas de enlace y de hardware.

Recuerda, los DBMS no realizan las consultas siempre de la misma forma, y ejecutar dos veces la misma consulta puede incluso durar diferente, porque puede haberse realizado por métodos diferentes.
El plan de consulta de un DBM depende no sólo de la escritura de la consulta, sino de los resultados estadísticos que ese DBMS tenga almacenados y que usa para optimizar los métodos. Esa es una parte que mucha gente se olvida: Los DBMS tienen "memoria" de lo que hicieron y cómo lo hicieron. Se usa para decidir que es mejor para una consulta determinada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 18/12/2009 a las 08:08
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:23.