Análisis avanzado de interceptación de consultas de MySQL (6)
Pregunta : En el entorno de desarrollo, ¿cuáles son los pasos para analizar y optimizar SQL?
Proceso :
- Observe, ejecute durante al menos 1 día para ver la producción lenta de SQL
- Abra el registro de consultas lentas, establezca el umbral, por ejemplo, si supera los 5 segundos, es SQL lento, y agárrelo
- EXPLICAR + análisis SQL lento
- mostrar perfil análisis adicional
- Gerente de operación y mantenimiento o DBA, para el ajuste de parámetros del servidor de base de datos SQL
Puntos resumen :
- La consulta lenta está activada y capturada
- EXPLICAR + análisis SQL lento
- muestre la consulta del perfil los detalles de ejecución y el ciclo de vida de SQL en el servidor MySQL
- Ajuste de parámetros del servidor de base de datos SQL
1 registro de consultas lento
El registro de consultas lentas es un registro proporcionado por MySQL. Se utiliza para registrar declaraciones en MySQL cuyo tiempo de respuesta supera el umbral . Específicamente , SQL con un tiempo de ejecución superior al valor long_query_time (predeterminado 10 s) se registrará en el registro de consultas lentas. .
De forma predeterminada, la base de datos MySQL no activa la función de registro de consultas lentas , debemos configurar este parámetro manualmente. Si no es necesario para el ajuste, generalmente no se recomienda habilitar este parámetro , lo que provocará un consumo de rendimiento.
1.1 Cómo utilizar
Compruebe si está encendido :
SHOW VARIABLES LIKE '%slow_query_log%'
Habilitar el registro de consultas lentas :
SET GLOBAL slow_query_log = 1
-- 该语句只对当前数据库生效,且mysql重启后失效
Si necesita comenzar de forma permanente (no recomendado): Modifique el archivo de configuración my.cnf
--在[mysqld]下新增
slow_query_log =1
slow_query_log_file=/var/lib/mysql/my-log.log
Configure el tiempo de umbral de consulta lenta :
SHOW VARIABLES LIKE '%long_query_time%'
SET GLOBAL long_query_time = 3
Consulta cuántos registros de consultas lentas hay en el sistema actual :
show GLOBAL STATUS like '%Slow_queries%'
Caso de prueba :
-- 模拟一条执行时间需要15S的sql
select sleep(15);
Ver registros en la dirección de registro de consultas lentas:
1.2 MySQL dump lenta herramienta de análisis de registro de consultas lentas
En un entorno de producción, si desea analizar manualmente el registro, encontrar y analizar SQL, es muy problemático. Mysql proporciona herramientas de análisis de registros.
2 mostrar perfil
Show profile es proporcionado por mysql que se puede utilizar para analizar el consumo de recursos de la ejecución de la declaración en la sesión actual . Se puede utilizar para la medición de ajuste de SQL.
Encienda la función de mostrar perfil :
set profiling = on
Utilizar :
-
Ejecute el sql que se analizará primero
-
Ver resultados
show profiles;
-
Resultados de diagnóstico, puede ver el tiempo empleado en el ciclo de vida completo de la ejecución de SQL
show profile cpu,block io for query 137;
3 Registro de consultas global
Nunca lo inicie en un entorno de producción
Encender:
set GLOBAL general_log = 1;
set global log_output ='TABLE';
Después de eso, todas las declaraciones sql que escriba se registrarán en la tabla general_log en la biblioteca mysql
Ver el sql ejecutado:
select * from mysql.general_log;
poner = 'TABLA';
此后,你所编写的所有sql语句,将会记录到mysql库内的general_log表中
查看执行的sql:
```sql
select * from mysql.general_log;