OT - Optimizacion del motor de BD Mysql

61 views
Skip to first unread message

Gabriel Marquez

unread,
Mar 11, 2014, 10:28:04 PM3/11/14
to sp...@googlegroups.com
Estimad@s,

Me gustaria saber si existen funciones y/o herramientas para la optimizacion de respuesta del motor de base de datos de Mysql, muy aparte de la optimizacion de las consultas (queries).

Esperando su ayuda.

Rudy Godoy

unread,
Mar 12, 2014, 10:34:17 AM3/12/14
to Sociedad Peruana de Computación
Hola, 

no existen funciones, pero si algunas herramientas que te pueden decir donde esta el problema. En general, la mejora de desempeño depende de algunos factores principales:
hardware:
- Disco duro (velocidad -RPM-, filesystem, esquema de particionado)
- Memoria (cantidad y asignación por proceso/servicio/variable)
software:
- configuración de caches (queries, lectura, etc)
- uso de indices y configuración de los mismos en tablas

Puedes ver cuanto de tales recursos y como es que se consumen por cada consulta empleando la orden EXPLAIN seguida de tu consulta. También puedes activar la opción de registro de “slow queries” que te permitirá conocer cuales de tus consultas están empleando mayores recursos y toman mas tiempo en completarse. A partir de esa información puedes optimizar las opciones de configuración de MySQL en cuanto a los recursos mencionados.

Existen algunas herramientas como sql-bench que pueden analizar tu sistema e identificar puntos a poner atención y corregir. Sin embargo, estas cosas no son automáticas y aunque corregir los puntos básicos mejoraran el desempeño, no son la solución definitiva. A menudo la razón de los problemas de desempeño son las definiciones de las tablas y el uso que se da a los datos por parte de la aplicación en particular. Es decir, hay que trabajar en conjunto con los responsables de la aplicación para lograr un mejor resultado a largo plazo. He visto casos donde después de pocos años de puesto en producción una aplicación empieza a tener problemas de desempeño solamente por el hecho del crecimiento de datos, que no fue contemplado desde el diseño original de la aplicación.

Rudy

-- 
-- 
Para enviar mensajes al grupo: sp...@googlegroups.com
Para retirarse del grupo: spc-l-un...@googlegroups.com
Para mas opciones: http://groups.google.com/group/spc-l?hl=es
--- 
Has recibido este mensaje porque estás suscrito al grupo "Sociedad Peruana de Computación (SPC)" de Grupos de Google.
Para anular tu suscripción a este grupo y dejar de recibir sus mensajes, envía un mensaje a spc-l+un...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Gabriel Marquez

unread,
Mar 12, 2014, 11:04:11 AM3/12/14
to sp...@googlegroups.com
Gracias Rudy por tu email, me gustaría que me comentaras un poco mas acerca de lo siguiente que respondiste:

 
uso de indices y configuración de los mismos en tablas
También puedes activar la opción de registro de “slow queries” (como la activo y como funciona?)
 
Agradesco de antemano.
 


 

From: rudyg...@gmail.com
Subject: Re: [spc-l] OT - Optimizacion del motor de BD Mysql
Date: Wed, 12 Mar 2014 09:34:17 -0500
To: sp...@googlegroups.com

Jose Ayala Pineda

unread,
Mar 12, 2014, 11:08:13 AM3/12/14
to sp...@googlegroups.com
Todo se basa en q le hagas un "tunning" a la configuracion del servidor, alguna ayuda para que entiendas como hacer el tunning puede encontrarlo en:


Busca en google como "mysql tunning" y encontraras muchas mas informacion tmb y algunas herramientas como el MySQL Tuner.pl (que no recomiendo) pero que puedes revisarlo.

Saludos

Jose J. Ayala Pineda
Skype: jose_ayala_pineda
URL/Blog: http://inkahack.blogspot.com
Facebook: http://www.facebook.com/jose.ayalapineda
"Si tú tienes una manzana y yo tengo una manzana y las intercambiamos, entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y yo tengo una idea y las intercambiamos, entonces ambos tendremos dos ideas".
George Bernard Shaw


--

juan salas santillana

unread,
Mar 12, 2014, 11:13:54 AM3/12/14
to sp...@googlegroups.com
Percona se especializa en optimización de MySQl http://www.percona.com/ eelos ya tienen herramientas para esto, algunas gratuitas.
--
juan salas santillana

Rudy Godoy

unread,
Mar 13, 2014, 1:14:58 PM3/13/14
to Sociedad Peruana de Computación
Hola,

de hecho Percona tiene su propia distribución de MySQL y tienen un blog donde hay bastante información util sobre el tema. Sin embargo, ellos trabajan con optimizaciones para otro nivel de uso y mercado. Trabaje con Vadim para atender un cliente hace unos años. Si tienes un servidor con una base de datos y unos pocos megabytes de datos, en verdad la cosa es super básica.

Sobre la pregunta de Gabriel,
Los indices se crean al momento de definir la estructura de la tabla (DDL). Su uso depende de los datos que almacenes y de la manera que la aplicación manipula  (lectura/escritura) tales datos.
La opción de slow-queries se activa en el my.cnf, algunas distribuciones de Linux ya la traen activada de manera predeterminada.

Ernesto Cuadros-Vargas

unread,
Mar 13, 2014, 1:27:40 PM3/13/14
to Sociedad Peruana de Computacion, gammap...@hotmail.com
Hola Gabriel,

me parece que un punto super importantes es que revises los indices en cada una de las tablas que usas ...

Esta fue una pregunta para el ingreso a la maestria que no se porque en los cursos de BD no las discuten ...

Ejemplo:
tengo una tabla factura y una tabla de detalle factura.
Resulta obvio que la table detalle tenga una llave foranea llamada id_factura.

Aqui esta el detalle pues ser llave foranea significa que en la otra table esta indexado (hay estructuras de datos de busqueda de informacion de forma rapida)
Pero ser una llave foranea en la tabla detalle NO SIGNIFICA automaticamente que este indexada para busquedas por este campo en la tabla detalle ...

Imagina la consulta: recuperar todos los registros de la tabla detalles de una factura de id_factura=100. Si la tabla detalle no tiene un indice para ese campo pues la busqueda sera lenta simplemente y como las tablas de detalles suelen ser numerosas pues el triempo de respuesta ira aumentando gradualmente.

Otro detalle es: que tipo de indice se requiere para ese campo en la tabla detalle?
Sirve un indice Hash si quieres busquedas muy directas sobre un ID-
Si haces busquedas por intervalos pues no se usa Hash ... se usa un BTree.
Ademas si quieres que los detalles de una misma factira esten fisicamente proximos requieres un indice clusterizado ...

Y asi vamos afinando las tablas ... yo normalmente parto de la funcionalidad que requieres para luego en funcion de esos casos ir a ver como se arma la consulta y sabiendo en que sentido viene la informacion (de factuira a detalle o de detalle a factura) uno analiza si las tablas estan preparadas para sopòrtar consultas en gran escala ...

Como veras no es un tema de BD solamente ... es un tema de estructuras de datos, 
Tambien esta en medio temas de costo computacional de cada estructura que se estudia en un curso de analisis y diseño de algoritmos ... 
Tambien hay un tema de concurrencia si piensas que multiples usuarios van a accesar a tus indices ...

Eso es lo que hacemos en ciencia de la computacion y que la gente (cuando no esta informada) dice: "son cosas teoricas"

Saludos y buena suerte ...
er


2014-03-11 21:28 GMT-05:00 Gabriel Marquez <
gammap...@hotmail.com
>
:
Estimad@s,

Me gustaria saber si existen funciones y/o herramientas para la optimizacion de respuesta del motor de base de datos de Mysql, muy aparte de la optimizacion de las consultas (queries).

Esperando su ayuda.

--
--
Para enviar mensajes al grupo: sp...@googlegroups.com
Para retirarse del grupo: spc-l-un...@googlegroups.com
Para mas opciones: http://groups.google.com/group/spc-l?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Sociedad Peruana de Computación (SPC)" de Grupos de Google.
Para anular tu suscripción a este grupo y dejar de recibir sus mensajes, envía un mensaje a spc-l+un...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
**************************************************************
Ernesto Cuadros-Vargas. PhD
Head of the School of Computer Science
San Pablo Catholic University, Arequipa-Peru (www.ucsp.edu.pe)
http://socios.spc.org.pe/ecuadros
(+51)958.339.127  (+51)(54)608020 Ext 326 (Office) 
(+51)(54)281517(Fax)
*************************************************************

Carlos Eduardo Sotelo Pinto

unread,
Mar 17, 2014, 12:51:51 PM3/17/14
to sp...@googlegroups.com, gammap...@hotmail.com
Muy cierto ernesto, pero tambien hay un costo de infraestructura, ante lo cual yo te preguntaria antes de hablar de indices y claves

  • Cuanto cuesta en recursos la consulta mas grande?
  • Utilizas procedimientos lamacenados? costo de recursos
  • Agregar nuevos tipos de indices, tendra un impacto significativo, si la base de datos no será a gran escala?
Puede que se termine construyendo un vehiculo que vaya a velocidad de un formula 1, consumiendo los costos de esto, cuando lo que necesito es un bocho que sea economico para hacer taxi

El uso de la base de datos esta directamente relacionada a los recursos, y me parece que es ahi donde apunto la pregunta, mysql, por lo general será una base de datos del tipo plug and play ( no em atrevería a ponerla en proyectos criticos ), sin embargo, de acuerdo a las capacidad del servidor, se puede distribuir los recursos de manera eficiente, de manera que puedo tener un bochito tuneado y muy economico :) haciendo taxi

Para esto, hay herramientas, como percona que te da un wizard basado en los recursos, pero debesconcoerlo, por que si bien es cierto, es una herramienta, no te da la solución absoluta

De ahi los vas ajustando, siempre viendo tus valores de uso de procesador y memoria ram, y obviamente analizando las consultas que tengas lentas,  ( activar el mysql slow ) de manera que puedas hacerles seguimiento y aqui optmizarlas para el menor consumo de memoria posible

Me trevería a decir que depende de la base de datos para que la aplicación vaya rapido o no, el lenguae no interviene mucho, asi sea un ms java, si tu base de datos va bien, hasta en ms java ira rapido

saludos


Carlos Eduardo Sotelo Pinto | http://carlossotelo.com | csotelo@twitter
    GNU Linux Admin | PHP Senior Web Developer
    Mobil: RPC (Claro)+51, 958194614 | Mov: +51, 959980794
    GTalk: carlos.so...@gmail.com | Skype: csotelop
    MSN: carlos.so...@gmail.com | Yahoo: csotelop
    GNULinux RU #379182 | GNULinux RM #277661
GPG FP:697E FAB8 8E83 1D60 BBFB 2264 9E3D 5761 F855 4F6B
Reply all
Reply to author
Forward
0 new messages