Bienvenidos sean a este post, hoy veremos como es el formato del archivo del log y la tabla de log lento.
Cuando iniciamos el log nos genera un encabezado muy similar al visto al log general:
/usr/sbin/mysqld, Version: 10.3.29-MariaDB-0+deb10u1 (Debian 10). started with:
Tcp port: 3306 Unix socket: /run/mysqld/mysqld.sock
Time Id Command Argument
Por no decir que es el mismo, a continuacion les dejo un ejemplo de como es una entrada en el log:
# Time: 140116 11:19:05
# User@Host: root[root] @ localhost []
# Thread_id: 4 Schema: test QC_hit: No
# Query_time: 0.059419 Lock_time: 0.000340 Rows_sent: 1 Rows_examined: 66620
SET timestamp=1389867545;
SELECT COUNT(*) FROM t
WHERE a > b;
Como pueden ver nos dan ciertos campos para describirnos cual es cada uno, veamos el detalle de cada uno de estos campos:
- Time, es la hora y fecha de cuando se registro el evento
- User@host, es la cuenta que realizo la ejecucion almacemada, con el correspondiente equipo
- Thread id, es el id de la conexion
- Schema, es la base de datos
- QC Hit, nos informa si el query fue encontrado en el cache de queries
- Query Time, el tiempo total de ejecucion del query
- Lock time, el tiempo que llevo el bloqueo sobre la tabla
- Rows sent, cuantas lineas se enviaron
- Row examined, la cantidad de lineas que se buscaron
Por ultimo tenemos los dos comandos que se usaron para generar el log anterior, si tuvieramos activo la opcion de log-short-format, la informacion almacenada en el log se veria como la siguiente:
# Thread_id: 5 Schema: test QC_hit: No
# Query_time: 0.230296 Lock_time: 0.000302 Rows_sent: 1 Rows_examined: 263337
SET timestamp=1389869887;
SELECT COUNT(*) FROM t WHERE a > b;
En este caso nos brindara solo informacion mas importante para una depuracion, como son el id de conexion, la base de datos, si estaba en el cache o no y los datos de ejecucion, omitiendo los datos de cuando sucedio y quien fue el responsable, esto puede ser util para cuando necesitamos saber cual fue el inconveniente y no quien fue el generador del inconveniente, pero como siempre quedara a criterio de cada uno y la necesidad del momento para trabajar con un log u otro.
La tabla slow_log
Tal como en todos (o casi todos) los logs vistos hasta ahora no solo tenemos la posibilidad de trabajar con archivos sino tambien con tablas dentro de la base mysql, este es muy similar al anterior pero con una sutiles diferencias, veamos las columnas que la componen:
- start_time, almacena la fecha y hora de sucedido al evento
- user_host, almacena la cuenta involucrada
- query_time, almacena el tiempo de ejecucion del query
- lock_time, almacena el tiempo de bloqueo de la tabla
- rows_sent, almacena la cantidad de lineas enviadas
- rows_examined, almacena la cantidad de lineas verificadas
- db, almacena la base involucrada
- last_insert_id, almacena informacion sobre las columnas AUTO_INCREMENT en el futuro
- insert_id, idem al anterior
- server_id, almacena el id del servidor informado en un entorno de replicacion
- sql_text, almacena los comandos involucrados en esta ejecucion
- thread_id, almacena el id de conexion
- rows_affected, almacena las lineas que fueron afectadas por este query
Como pueden ver tenemos la misma informacion que en el caso de los archivos pero tambien tenemos algunos datos adicionales que nos pueden ser utiles para determinados ambientes, por ejemplo para entornos con muchos servers, o para obtener algunos datos adicionales y poder ser utilizados por programas almacenados.
En resumen, hoy hemos visto como es el formato de un archivo del log lento, una descripcion de los datos que nos devuelve y como es la version resumida o corta, tambien hemos visto cuales son las columnas que componen a la tabla de log lento, y algunos campos adicionales que nos pueden ser utiles, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
