Gostaria de saber se existe alguma outra maneira de verificar nossas consultas lentas sem registrar uma consulta lenta. Suponha que eu tenha um servidor altamente ocupado que não possa registrar muito para economizar memória e E/S. Então, existe alguma outra maneira disponível para verificar se eu tenho uma consulta lenta? Eu sei, podemos fazer o perfil da consulta, mas ainda não sabemos exatamente o que fazer para identificar qual consulta é a que ocupa mais tempo e memória.
Acabei de iniciar a administração do mysql e não tenho certeza de como lidar com isso. Qualquer orientação será muito apreciada.
Você pode executar a instrução a seguir em um loop em um script que aciona 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 fornecer mais ou menos informações, dependendo da consulta que você emitir.
Para não salvar a mesma consulta muitas vezes, você pode usar o hash da consulta como uma chave única.
Se você não deseja habilitar o log de consultas lentas, tenho uma sugestão
Você pode usar pt-query-digest em um intervalo de tempo.
Eu sugeri isso algumas vezes no DBA StackExchange
Nov 24, 2011
: Efeitos gerais de desempenho do log de consulta do MySQLApr 24, 2012
: Investigue o pico na taxa de transferência do MySQLJul 26, 2012
: O que está sendo executado agora?Se você olhar para o meu
Nov 24, 2011
link , eu forneci um script de shell que você pode crontab para iniciar pt-query-digest .DE UMA CHANCE !!!