MySQL: slow query's

MySQL permite registrar en un fichero de texto todas aquellas query's que tardan mucho en ejecutarse, lo que generalmente hacer que nuestras aplicaciones vayas más lentas. Una vez las tengamos archivadas, con la información que nos proporciona dicho log, podemos tomar medidas correctivas para evitar que sean tan pesadas. Para activar el log's de las slow query's tenemos que añadir en el fichero de configuración (/etc/my.cfg) del servidor lo siguiente,
log-queries-not-using-indexes
log-slow-queries = /var/log/mysql/slow_querys.log
long_query_time  = 10
Donde,
  • log-slow-queries contiene el path completo al fichero.
  • long_query_time es el tiempo, en segundo, para considerar una slow query.
  • log-queries-not-using-indexes, le indica al servidor MySQL que envíe a dicho log todas aquellas query's que no usen índices.
Nota: Tanto carpeta como fichero necesitan permisos de escritura del servicio MySQL.

Una vez tengamos los cambios aplicados, reiniciamos el servidor MySQL
shell> /etc/init.d/mysql restart
y comprobamos que las slow query's están activadas.
mysql> show variables like '%slow%';
...
| log_slow_queries    | ON                             |
| slow_query_log_file | /var/log/mysql/slow_querys.log |
...
Una vez tenemos esta facility activada, cualquier consulta a MySQL que sea considera lenta, irá al fichero anteriormente indicado y gracias al comando mysqldumpslow podremos examinarlo detenidamente, para así ver cómo poder optimizarla y que no ralentice las peticiones de la aplicación.
shell> mysqldumpslow -t 10 /var/log/mysql/slow_querys.log
# Time: 111003 17:14:49
# User@Host: zbx[zbx] @ web.domain.com [192.168.1.83]
# Thread_id: 40302  Schema: zbx Last_errno: 0  Killed: 0
# Query_time: 3049.402685  Lock_time: 0.000205  Rows_sent: 0  Rows_examined: 1468256894  Rows_affected: 0  Rows_read: 0
# Bytes_sent: 44  Tmp_tables: 2  Tmp_disk_tables: 0  Tmp_table_sizes: 120
# InnoDB_trx_id: 451B1F
use zbx;
SET timestamp=1317654889;
SELECT  DISTINCT  g.* FROM groups g,hosts_groups hg,hosts h WHERE ((g.groupid...
Si esta entrada te parece interesante, quizás también te interese MySQL, rotado de slow logs.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios