viernes, 1 de febrero de 2013

log sentencias mysql

Para poder visualizar todas las sentencias SQL que se ejecutan en MySQL así como los detalles de quien las ejecutó, basta con añadir al fichero de configuración (/etc/my.cnf en Linux o my.ini en Windows) la opción:log=fichero

Por ejemplo:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log=/var/log/mysqld.log

Nota: el fichero de log tiene que tener permisos de escritura para los usuarios de los que se desean ver las sentencias SQL. Para dar permiso de lectura/escritura a todos en Linux: chmod a+rw fichero



Para monitorear el rendimiento de MySQL, que mejor que arrancar por las consultas, para hacer esto disponemos de una serie de alternativas:
  • Activar el Slow Query Log: loguea todas las consultas que se excedan de un tiempo dado (log_query_time) o bien, que no utilicen íncides (log-queries-not-using-indexes). Para activarlo, debemos editar el archivo my.cnf y agregar en la sección [mysqld]:

long_query_time         = 1
log-slow-queries        = /var/log/mysql/mysql-slow.log
log-queries-not-using-indexes
  • Describir una consulta: utilizar el comando DESCRIBE (o DESC es su forma abreviada). Por ejemplo: “DESC SELECT … FROM … WHERE … ORDER BY …”, este nos devolverá si está utilizando índices y cuales son.
  • Analizar mediante EXPLAIN, como ejecuta las consultas MySQL y determinar si se utilizan índices, el número de filas exploradas e información adicional. Ver, Optimización de consultas con EXPLAIN

No hay comentarios: