Identificar consulta lenta sem o lento logs de consulta no mysql server
-
26-09-2020 - |
Pergunta
Eu estou querendo saber é que existe alguma outra maneira de verificar a nossa consultas lentas, sem o log de consultas lentas.Suponha que, eu tenho um highily ocupado server não pode se dar ao luxo de log muito para economizar memória e I/Os.Então, existe alguma outra forma disponível para verificar se eu tenho uma consulta lenta?Eu sei, nós podemos fazer de criação de perfil de consulta, mas ainda não tem certeza exatamente o que fazer para identificar qual a consulta é aquele que assume a maior parte do tempo e da memória.
Acabou de começar o mysql administração e não sabe como lidar com isso.Qualquer orientação será muito apreciada.
Solução
Se você não deseja habilitar o log de consultas lentas, eu tenho uma sugestão
Você pode usar pt-consulta-digest durante um intervalo de tempo.
Eu sugeri isso algumas vezes na DBA StackExchange
Nov 24, 2011
: MySQL geral de consulta de log de desempenho de efeitosApr 24, 2012
: Investigar pico no MySQL taxa de transferênciaJul 26, 2012
: O que está funcionando agora?
Se você olhar no meu Nov 24, 2011
link, Eu prestei um shell script que você pode crontab para lançar pt-consulta-digest.
DAR-LHE UMA TENTATIVA !!!
Outras dicas
Você pode executar a instrução a seguir em um loop em um script que dispara a instrução a cada 10 segundos, por exemplo.
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'
Você pode personalizá-lo para dar-lhe mais ou menos informações, dependendo da consulta problema.
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)
No fim de não guardar a mesma consulta muitas vezes, você pode usar o hash da consulta como uma chave exclusiva.