Saltar al contenido

Cómo Solucionar problemas de consultas para MySQL

marzo 4, 2020

 

Esta guía está pensada para servir como un recurso de solución de problemas y punto de partida como a diagnosticar la configuración de MySQL. Vamos a repasar algunos de los problemas que muchos usuarios encuentran MySQL y proporcionan una guía para solucionar problemas específicos. También incluiremos enlaces a tutoriales digitalocean y la documentación oficial de MySQL, que puede ser útil en ciertos casos.

A veces los usuarios se encuentran con problemas una vez que comienzan emitir consultas sobre sus datos. En algunos sistemas de bases de datos, incluyendo MySQL, instrucciones de consulta obligada en extremo en un punto y coma (;) para la consulta al completo, como en el siguiente ejemplo:

SHOW * FROM table_name;

  • MOSTRAR * FROM nombre_tabla;

Si usted no puede incluir un punto y coma al final de la consulta, el indicador continuará en una nueva línea hasta que se complete la consulta mediante la introducción de un punto y coma y presionar ENTER.

Algunos usuarios pueden encontrar que sus consultas son extremadamente lento. Una forma de encontrar el que instrucción de consulta es la causa de la desaceleración es para activar y ver el registro de consultas lentas de MySQL. Para ello, abra el archivo de mysqld.cnf, que se utiliza para opciones de configuración para el servidor MySQL. Este archivo se almacena normalmente en el directorio /etc/mysql/mysql.conf.d/:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

  • sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Desplazarse por el archivo hasta que vea las siguientes líneas:

. . .
#slow_query_log = 1
#slow_query_log_file = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
. . .

Estas directivas comentadas de salida proporcionan opciones de configuración por defecto de MySQL para el registro de consultas lentas. En concreto, esto es lo que cada uno de ellos lo hacen:

  • lento-consulta-log: se establece este valor a 1 activa el registro de consultas lentas.
  • lento consulta de archivo de registro: Esto define el archivo donde MySQL almacenará los mensajes de consultas lentas. En este caso, apunta al archivo /var/log/mysql-slow.log.
  • long_query_time: Al establecer esta directiva para 2, se configura MySQL para conectarse a cualquier pregunta que tardan más de 2 segundos para completar.
  • log_queries_not_using_indexes: Esto le dice a MySQL que también conectarse a cualquier pregunta que se ejecutan sin índices en el archivo /var/log/mysql-slow.log. Este ajuste no es necesario para el registro de consultas lentas a la función, pero puede ser útil para localizar consultas ineficientes.

Uncomment cada una de estas líneas por la eliminación de los signos de almohadilla (#) principales. Ahora la sección se parece a esto:

. . .
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes
. . .

Nota: Si está ejecutando MySQL 8+, estas líneas de comentarios no estará en el archivo mysqld.cnf por defecto. En este caso, añadir las siguientes líneas al final del archivo:

. . .
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes

Después de habilitar el registro de consultas lentas, guardar y cerrar el archivo. A continuación, reinicie el servicio MySQL:

sudo systemctl restart mysql

  • sudo systemctl reiniciar MySQL

Con estos ajustes en su lugar, puede encontrar instrucciones de consulta problemáticas consultando el registro de consultas lentas. Puede hacerlo con menos, así:

sudo less /var/log/mysql_slow.log

  • sudo menos /var/log/mysql_slow.log

Una vez que haya señalado a las consultas que causan la desaceleración, puede encontrar nuestra guía sobre cómo optimizar las consultas y tablas en MySQL y MariaDB en un VPS para ser útil con la optimización de ellos.

Además, MySQL incluye la declaración, que proporciona información sobre cómo MySQL ejecuta consultas explicar. Esta página de la documentación oficial de MySQL proporciona información sobre el uso de explicar a destacar consultas ineficientes.

Para obtener ayuda con la comprensión de las estructuras de consulta de base, consulte nuestra Introducción a MySQL Consultas.