MySQL - Live table blocking queries. AYUDA.

   
Vista:

Live table blocking queries. AYUDA.

Publicado por Julio (1 intervención) el 05/07/2013 11:16:36
Hola a todos.


Tengo un problema que no se realmente como solucionar a nivel de optimizacion a la hora de obtener datos de una tabla
La tabla aloja como unas 6/7 millones de filas y esta siendo insertada y actualizada casi que constantemete.
He creado una aplicacion web que muestra los datos de esta tabla (limitando la consulta a 100 filas) en la cual podemos filtrar, ordenar datos... etc.
El problema es que unas veces el navegador tarda en darme datos 1 segundo y otras veces (las mas comunes) tarda 1 minuto o incluso mas en devolverme el resultado de la consulta.
Reconozco que al ser actualizada constantemente por procedimientos externos , que modifican, insertan o borran filas constantemente, las consultas sobre la tabla son bloqueadas y ello es lo que causa que tarde tanto en devolverme el resultado de la consulta..

Alguien tiene alguna idea de como solucionar este problema ? He pensado en diferentes cosas como crear vistas o algo parecido, pero no me resultan soluciones apropiadas.


Muchas gracias de antemano.


Un cordial saludo,



Julio.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Live table blocking queries. AYUDA.

Publicado por xve (898 intervenciones) el 05/07/2013 19:50:25
Hola Julio, una vez, tuvimos un problema similar con una base de datos +/- 2 millones de registros, pero tenia unos 20 o 30 updates por segundo, y las consultas tardaban bastante.

La manera con que lo solucionamos, fue

1.- primeramente en convertir la tabla de MyISAM a InnoDB indicando que generara un solo archivo para esa base de datos (por defecto, te junta todas las tablas innoDB en un solo archivo inmenso.

2.- revisamos los indices, que estuviera muy optimizado

3.- lo ultimo, y creo que fue lo mas importante, fue optimizar el mysql en nuestro servidor.
Para ello, utilizamos la herramienta mysqltuner y un poco de documentación de Internet...

El resultado fue que pasamos de tardar de entre 2 y 6 segundos por consulta a milésimas de segundo... casi instantáneo...

Espero que te sirva... ya nos comentaras...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar