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

Optimizacion de configuración servidor MySQL 5.5

Estas en el tema de Optimizacion de configuración servidor MySQL 5.5 en el foro de Mysql en Foros del Web. Buenas. Tengo un servidor MySQL 5.5 y se me plantean varias (muchas) dudas sobre cómo mejorar el rendimiento de la base de datos. La base ...
  #1 (permalink)  
Antiguo 07/02/2012, 16:36
 
Fecha de Ingreso: agosto-2009
Mensajes: 101
Antigüedad: 14 años, 8 meses
Puntos: 0
Optimizacion de configuración servidor MySQL 5.5

Buenas.

Tengo un servidor MySQL 5.5 y se me plantean varias (muchas) dudas sobre cómo mejorar el rendimiento de la base de datos.

La base de datos más gorda que tengo ocupará unos 5 Gb, estando el 99% de dicha información en una tabla donde recojo datos de parámetros por fechas.

Las consultas SELECT se hacen eternas.

Estoy usando la configuración por defecto, así que me gustaría saber qué me aconsejais para mejorar el rendimiento.

Un saludo de antemano.
  #2 (permalink)  
Antiguo 11/02/2012, 15:10
 
Fecha de Ingreso: agosto-2009
Mensajes: 101
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Optimizacion de configuración servidor MySQL 5.5

Nadie puede echarme un cable?
  #3 (permalink)  
Antiguo 11/02/2012, 17:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Optimizacion de configuración servidor MySQL 5.5

Cita:
Las consultas SELECT se hacen eternas.
Las consultas pueden ser "eternas" incluso con excelentes configuraciones de servidor.
¿Has probado optimizarlas de otras formas?
¿Cómo son esas consultas "eternas", qué sintaxis tienen?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 12/02/2012, 06:01
 
Fecha de Ingreso: agosto-2009
Mensajes: 101
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Optimizacion de configuración servidor MySQL 5.5

Las consultas son así:

Código SQL:
Ver original
  1. SELECT * FROM Datos WHERE DATE(fecha) = '20110101' AND idinstalacioninversor = 1

La tabla es así:
Código MySQL:
Ver original
  1. CREATE TABLE `datos` (
  2.     `iddato` INT(11) NOT NULL AUTO_INCREMENT,
  3.     `fecha` DATETIME NULL DEFAULT NULL,
  4.     `horanumero` DECIMAL(10,3) NULL DEFAULT '0.000',
  5.     `idparametro` INT(11) NOT NULL,
  6.     `idinstalacioninversor` INT(11) NOT NULL,
  7.     `valor` DOUBLE NULL DEFAULT NULL,
  8.     `anulado` TINYINT(1) NOT NULL DEFAULT '0',
  9.     PRIMARY KEY (`iddato`),
  10.     INDEX `fecha` (`fecha`)
  11. )
  12. COLLATE='utf8_general_ci'
  #5 (permalink)  
Antiguo 12/02/2012, 08:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Optimizacion de configuración servidor MySQL 5.5

Vamos por partes:
1) Las consultas que usan "*" para obtener los campos usualmente son las más ineficientes de todas, porque traen todo, incluso campos que no se usarán.

2) Además, habitualmente no hacen uso de los índices secundarios, porque al traer la PK y siendo esta prioritaria en el orden (por ubicación de la columna), el aprovechamiento del índice de fecha es inexistente.

3) Crear un índice sobre un sólo campo, sin mas datos, puede volverse ineficiente, porque si bien la lectura podría acelerarse un poco, el WHERE no es optimizable, y se aplica una vez leído todo, por lo cual no le estas agregando una verdadera optimización al hacer la consulta.

4) Si vas a crear un índice secundario, usa principalmente un conjunto de datos que puedas necesitar en todas las ocasiones, o que sea crítico para la consulta. Algo como usar de clave de indice, la fecha, hora y idinstalacioninversor, podría ser mejor que sólo la fecha.

5) Una cosa que optimiza mucho es llamar a los campos que realmente vas a necesitar, y no a todos. En los sistemas complejos o de muchos datos (trabajo en uno de ellos), traer el listado completo de clientes con todos sus datos podría demandar mucho tiempo. En vez de eso se traen cuatro datos (la PK entre ellos), y luego con sólo la PK se invocan el resto de los que se necesitan. Eso ahorra ingentes cantidades de memoria, procesamiento y transmisión de datos, y le agrega un extra a la aplicación. Hacer las dos llamadas le lelva al sistema más de cien veces menos tiempo que traer todo la primera vez.

Hay oros puntos, pero la muestra que posteaste no permite darte mas consejor.
¿Tienes alguna otra consulta un poco más elaborado que esto sacado de manual? Digo algo verdaderamente lento, con JOINs o subconsultas.

Postea algo que realmente te esté trayendo problemas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 13/02/2012, 02:47
 
Fecha de Ingreso: agosto-2009
Mensajes: 101
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Optimizacion de configuración servidor MySQL 5.5

Gracias por tus consejos.

Realmente tengo para trabajar un buen rato siguiendo todo lo que me has comentado.

Yo pensaba que, además, era importante configurar el servidor para facilitar el trabajo con grandes (en volumen) bases de datos, pero veo que antes habría que mejorara otras cosas!

Etiquetas: configuraciòn, my.cnf
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 14:54.