Muchas veces puede surgir la necesidad de conocer como está funcionando nuestra base de datos, ya sea por algún fallo o simplemente si se desea monitorizar regularmente su estado. MySQL almacena en sus tablas de sistema, información acerca de las operaciones realizadas en el servidor. Esta información es fácilmente accesible mediante la siguiente sentencia:
SHOW (GLOBAL | LOCAL) STATUSSELECT VARIABLE_NAME, VARIABLE_VALUE
FROM information_schema.global_status
Este alias nos permite acceder de una forma rápida a la tabla de global_status o local_status donde se encuentran casi 300 variables almacenadas desde el último reinicio. La diferencia entre ambas, es que si usas global, sacarás los números globales de todo el servidor y con local sólo los de esta session.
Principales variables de estado del MySQL
Uptime=> Tiempo que lleva activo el servidor desde su último reinicio o puesta a 0 de las variables.
Queries => Número de queries ejecutadas en el MySQL.
Uptime => Tiempo que lleva activo el servidor desde su último reinicio o puesta a 0 de las variables.
Slow_queries => Consultas lentas ejecutadas. El valor de umbral de estas consultas es configurable(por defecto 10). Pueden ser almacenadas en un archivo plano.
Aborted_client Número de conexiones mal cerradas.
Max_used_connections Máximo de conexiones concurrentes en un momento dado.
Threads_connected => Hilos conectados en ese momento.
Threads_running => Hilos creados y activos.
Handler_read_first => Consultas que sacan información de la tabla completa. Esto nos indica muchos escaneos full index.
Análisis de los datos
Con estos indicadores, aparte de darnos una idea del consumo de tu MySQL, podemos extraer información para mejorar el rendimiento del servidor.
key_read /key_read_request (%) => Porcentaje de fallos de uso de la cache. Si la división de estas dos variables supera un 1% es señal de alarma, y habría que ajustar estos valores.
Si el número de tablas temporales creadas, (created_tmp_disk_tables), es muy grande, se puede aconsejar cambiar el tamaño de la tabla temporal ( tmp_table_size)
Select_full_join => Si este número se aleja mucho del 0, tendrias que revisar tus consultas ya que se estan produciendo JOIN’s sin usar los indices.
Como ven, hay cientos de parámetros que seria interesante tener controlados para así poder mejorar nuestras consultas, o cambiar los ajustes del servidor. Con ésto, nos anticiparemos a posibles fallos críticos de nuestro servidor.