Logs de consulta lenta do MySQL

Resumo : neste tutorial, você aprenderá sobre os logs de consultas lentas do MySQL, configurações e o mysqldumpslowutilitá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_logindica 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_logopção é OFF.

A slow_query_log_fileopçã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 mysqlno /var/log/diretório:

mkdir -p /var/log/mysql/Linguagem de código:  JavaScript  ( javascript )

Segundo, crie um novo arquivo chamado mysql-slow.logdentro do /var/log/mysql/diretório:

touch /var/log/mysql/mysql-slow.logLinguagem de código:  JavaScript  ( javascript )

Terceiro, altere a permissão do mysqlusuá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 = 1Linguagem 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 mysqldumpslowutilitá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.logLinguagem 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 mysqldumpslowo utilitário para examinar as consultas lentas nos logs de consultas lentas.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *