Recientemente he tenido la necesidad de monitorear en tiempo real el desempeño de una base de datos MySQL. Si bien hasta el momento he utilizado top y mysqladmin la información que obtenía allí era fragmentada y en ocasiones difícil de correlacionar (como consultas lentas, asi como nivel de utilizacion del Query Cache).
Un comando que indica procesos en ejecución en mySQL es el siguiente:
mysqladmin -u
Sin embargo, revisando en Internet me encontré con una utilidad denominada mtop que simplifica de gran manera esta labor.
Luego de descargar el archivo .tar.gz se debe proceder a validar las dependencias. En el archivo README se indica lo siguiente:
mtop requires the following perl modules:
Module Available At
------------ --------------------------------------------------------
Curses http://www.cpan.org/authors/id/WPS
DBI Distributed as Bundle::DBI: http://www.cpan.org/authors/id/TIMB
DBD::mysql http://www.cpan.org/authors/id/JWIED
Getopt::Long (Distributed with Perl 5)
Net::Domain Part of libnet: http://www.cpan.org/authors/id/GBARR/
Send bugs/comments to Marc Prewitt
Por tanto, verifique que tenga instalados los paquetes ncurses, ncurses-devel y perl-Curses (Disponible en http://dag.wieers.com/rpm/packages/perl-Curses/)
El proceso de instalación es el siguiente:
perl Makefile.PL
make
make install
Una vez instalado puede ejecutarlo con el comando mtop. Te recomiendo revisar el total de threads, y el numero de estos activos en ejecución en un momento dado: Ej. 37 threads: 1 running.
Elementos de monitoreo
* Habilitar el Slow Query Log: loguea todas las consultas que se excedan de un tiempo dado (log_query_time) o bien, que no utilicen índices (log-queries-not-using-indexes). Para activarlo, se debe editar el archivo my.cnf (habitualmente localizado en la ruta raiz /etc) y agregar en la sección [mysqld] las siguientes directivas:
long_query_time = 1
log-slow-queries = /var/log/mysql/mysql-slow.log
log-queries-not-using-indexes
Se puede revisar en el log de consultas lentas cuales consultas estan tomando tiempo excesivo como punto de inicio para atacar un problema de desempeño.
* Analizar mediante el comando EXPLAIN, el plan de ejecución para una consulta especifica. Este comando permite determinar si se utilizan índices, el número de filas exploradas e información adicional.
EXPLAIN {CONSULTA SQL}
Revisa tambien algunos ejemplos de consultas avanzadas para MySQL
Otros artículos de Interés
*http://www.maxglaser.net/como-mejorar-y-monitorear-el-rendimiento-de-mysql/
*http://www.mysqlperformanceblog.com/
*http://dev.mysql.com/tech-resources/presentations/presentation-oscon2000-20000719/index.html
No hay comentarios:
Publicar un comentario