Resumo : neste tutorial, você aprenderá sobre os logs de consultas lentas do MySQL, configurações e o mysqldumpslow
utilitário para examinar consultas lentas.
Introdução aos logs de consulta lenta do MySQL
Quando você executa consultas que demoram mais que um limite especificado, o MySQL as trata como consultas lentas.
Posteriormente, o MySQL registra essas consultas lentas em logs chamados logs de consultas lentas .
Esses logs de consultas lentas são uma ferramenta crucial para ajudá-lo a analisar e otimizar o desempenho do seu banco de dados.
Configurações de log de consulta lenta do MySQL
1) Verificando a configuração atual
Para verificar a configuração atual do log de consulta lenta, siga estas etapas:
Primeiro, abra o Prompt de Comando no Windows ou Terminal em sistemas do tipo Unix e conecte-se ao servidor MySQL:
mysql -u root -p
Segundo, verifique as variáveis de log de consulta lenta:
SHOW VARIABLES LIKE '%slow_query%';
Linguagem de código: JavaScript ( javascript )
Saída:
+---------------------+----------------------------------+
| Variable_name | Value |
+---------------------+----------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /var/lib/mysql/mysql-slow.log |
+---------------------+----------------------------------+
2 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
O valor de slow_query_log
indica se o log de consulta lenta está habilitado. Se definido como ON
, significa que o log de consulta lenta está habilitado; Se definido como OFF
, significa que o log de consulta lenta está desabilitado.
O MySQL desativa os logs de consulta lenta por padrão. Portanto, o valor da slow_query_log
opção é OFF
.
A slow_query_log_file
opção especifica o arquivo de log onde o MySQL registra as consultas lentas.
2) Configurando um arquivo de log de consulta lenta
Primeiro, crie um novo diretório chamado mysql
no /var/log/
diretório:
mkdir -p /var/log/mysql/
Linguagem de código: JavaScript ( javascript )
Segundo, crie um novo arquivo chamado mysql-slow.log
dentro do /var/log/mysql/
diretório:
touch /var/log/mysql/mysql-slow.log
Linguagem de código: JavaScript ( javascript )
Terceiro, altere a permissão do mysql
usuário para o diretório:
chown -R mysql:mysql /var/log/mysql/
Linguagem de código: JavaScript ( javascript )
3) Habilitando logs de consulta lenta
Para habilitar logs de consulta lenta, modifique o arquivo de configuração do MySQL adicionando as seguintes linhas:
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1
Linguagem de código: JavaScript ( javascript )
Neste arquivo:
slow_query_log
: defina como 1 para ativar o registro de consultas lento.slow_query_log_file
: especifique o caminho para o arquivo de log, que é/var/log/mysql/mysql-slow.log
.long_query_time
: Especifique o limite em segundos; se a consulta demorar mais que isso, ela será registrada. Colocamos um segundo para fins de demonstração.
Depois de salvar o arquivo de configuração do MySQL, você precisa reiniciar o servidor MySQL .
Alternativamente, você pode definir as variáveis correspondentes em tempo de execução seguindo estas etapas:
Primeiro, conecte-se ao servidor MySQL:
mysql -u root -p
Segundo, defina as opções relacionadas aos logs de consulta lenta:
set global slow_query_log = 1;
set global slow_query_log_file = '/var/log/mysql/mysql-slow.log';
set global long_query_time = 1;
Linguagem de código: PHP ( php )
Terceiro, recupera as variáveis para verificar as alterações:
select @@slow_query_log, @@slow_query_log_file, @@long_query_time;
Linguagem de código: CSS ( css )
Saída:
+------------------+-------------------------------+-------------------+
| @@slow_query_log | @@slow_query_log_file | @@long_query_time |
+------------------+-------------------------------+-------------------+
| 1 | /var/log/mysql/mysql-slow.log | 1.000000 |
+------------------+-------------------------------+-------------------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
4) Executando uma consulta lenta
Execute a seguinte consulta que leva 3 segundos para ser concluída:
select sleep(3);
5) Analisando consultas lentas
Para analisar a consulta lenta, você pode revisar o arquivo de log da consulta lenta:
cat '/var/log/mysql/mysql-slow.log'
Linguagem de código: JavaScript ( javascript )
Aqui está o conteúdo extraído:
# User@Host: root[root] @ localhost [] Id: 11
# Query_time: 3.000500 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 1
SET timestamp=1703580567;
select sleep(3);
Linguagem de código: PHP ( php )
A última linha mostra a consulta lenta que demorou mais de três segundos, o que ultrapassa o segundo especificado no arquivo long_query_time
.
Para torná-lo mais conveniente, o MySQL oferece o mysqldumpslow
utilitário que analisa os logs de consultas lentas e resume as consultas.
Execute o seguinte comando no terminal para examinar as consultas lentas armazenadas no arquivo mysql-slow.log:
mysqldumpslow /var/log/mysql/mysql-slow.log
Linguagem de código: JavaScript ( javascript )
Saída:
Reading mysql slow query log from /var/log/mysql/mysql-slow.log
Count: 1 Time=3.00s (3s) Lock=0.00s (0s) Rows=1.0 (1), root[root]@localhost
select sleep(N)
Linguagem de código: JavaScript ( javascript )
Resumo
- Os logs de consultas lentas do MySQL armazenam consultas que demoraram mais do que um limite especificado para serem executadas.
- Use
mysqldumpslow
o utilitário para examinar as consultas lentas nos logs de consultas lentas.