Identifique la consulta lenta sin registros de consulta lenta en el servidor MySQL
-
26-09-2020 - |
Pregunta
Me pregunto si hay alguna otra forma de revisar nuestras consultas lentas sin registrar la consulta lenta.Supongamos que tengo un servidor muy ocupado, no puede darse el lujo de registrar mucho para guardar la memoria y el I / OS.Entonces, ¿hay alguna otra forma disponible para verificar si tengo una consulta lenta?Sé que podemos hacer perfiles de la consulta, pero aún no está seguro de qué hacer exactamente para identificar qué consulta es la que toma la mayor parte del tiempo y la memoria.
Acabo de comenzar la administración de MySQL y no estoy seguro de cómo manejar esto.Cualquier orientación será muy apreciada.
Solución
Si no desea habilitar el registro de consulta lenta, tengo una sugerencia
Puede usar PT-Query-Digest < / a> sobre un intervalo de tiempo.
He sugerido esto varias veces en el DBA Stackexchange
-
Nov 24, 2011
: Efectos de rendimiento de la consulta general de MySQL -
Apr 24, 2012
: Investigue el pico en el rendimiento de MySQL -
Jul 26, 2012
: ¿Qué se está ejecutando en este momento? < / li>
Si miras a mi Nov 24, 2011
link Les proporcioné un script Shell, puede crontab para lanzar pt -Query-digest .
¡Dale un intento !!!
Otros consejos
Puede ejecutar la siguiente declaración en un bucle en un script que desencadena la declaración cada 10 segundos, por ejemplo,.
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'
Puede personalizarlo para brindarle más o menos información según la consulta que emita.
mysql> desc INFORMATION_SCHEMA.PROCESSLIST;
+---------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+-------+
| ID | bigint(21) unsigned | NO | | 0 | |
| USER | varchar(16) | NO | | | |
| HOST | varchar(64) | NO | | | |
| DB | varchar(64) | YES | | NULL | |
| COMMAND | varchar(16) | NO | | | |
| TIME | int(7) | NO | | 0 | |
| STATE | varchar(64) | YES | | NULL | |
| INFO | longtext | YES | | NULL | |
| TIME_MS | bigint(21) | NO | | 0 | |
| ROWS_SENT | bigint(21) unsigned | NO | | 0 | |
| ROWS_EXAMINED | bigint(21) unsigned | NO | | 0 | |
+---------------+---------------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
Para no guardar la misma consulta muchas veces, puede usar el hash de la consulta como una clave única.