Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Habilitar o registro de consultas lentas (log de consultas lentas) no banco de dados MySQL

Um dos principais requisitos para um servidor web rápido é ter instruções ou consultas SQL eficientes e eficazes que sejam otimizadas. Quaisquer comandos ou instruções SQL (Structured Query Language) não ideais que demorem muito ou muito tempo para serem executados usarão muitos recursos do sistema, fazendo com que o banco de dados MySQL seja executado mais lentamente e, em seguida, mais e mais consultas pendentes sejam enfileiradas e quando limite de conexão for atingido, os visitantes terão a conexão negada ou recusada. Na pior das hipóteses, seu servidor web também ficará inativo ou terá um desempenho continuamente inferior. O caso é especialmente verdadeiro quando você está usando o tipo de tabela MyISAM que usa bloqueio em nível de tabela em vez de bloqueio em nível de linha em um site de alto tráfego.

Às vezes, uma única consulta SQL pode ser a causa de todos os problemas do servidor. O MySQL tem uma funcionalidade integrada para capturar o log de consultas lentas ou identificar consultas que não são ideais e demoram muito para serem concluídas, o que permite registrar todas as consultas de execução lenta que levaram um número definido de segundos para serem executadas pelo mecanismo de banco de dados MySQL em um Arquivo. O log de consultas lentas não está ativado ou ativado por padrão na instalação do MySQL, portanto, é um dos logs menos usados.

Para habilitar o log de consultas lentas, simplesmente adicione a seguinte linha ao arquivo de configuração do MySQL (my.cnf ou my.ini) e reinicie o servidor MySQL:
log-slow-queries

Ou,
log-slow-queries = [path to the log file]

Substitua [caminho para o arquivo de log] com o caminho real para o arquivo de log de consulta lenta no qual você deseja que o MySQL grave o log, que é o valor opcional.

Ou você pode iniciar o mysqld com –log-slow-queries[=file_name] opção para habilitar o log de consulta lenta. Em ambas as sintaxes, se nenhum nome de arquivo de log for especificado, o nome padrão será host_name -slow.log, armazenado no diretório do arquivo de dados MySQL. Se um nome de arquivo for fornecido, mas não como um nome de caminho absoluto, o servidor também gravará o arquivo no diretório de dados.

Depois de habilitar o log de consultas lentas, o MySQL criará, capturará e registrará no arquivo de log com todas as instruções SQL que levaram mais de long_query_time segundos para executar, que por padrão é definido como 10 segundos . O tempo para adquirir os bloqueios de tabela iniciais não é contado como tempo de execução. mysqld escreve uma declaração no log de consulta lenta depois que ele foi executado e depois que todos os bloqueios foram liberados, então a ordem do log pode ser diferente da ordem de execução.

Você pode então examinar todas as consultas SQL lentas no arquivo de log e, em seguida, executar as etapas necessárias para otimizar as instruções SQL. O log de consulta lenta informará sobre o tempo em que a consulta foi concluída, quanto tempo a consulta levou para ser executada, quanto tempo levou para proteger seus bloqueios, quantas linhas foram enviadas de volta como resultado, quantas linhas foram examinadas para determinar o resultado, qual banco de dados foi usado e a própria consulta. Mas tenha em mente que uma consulta SQL contida no log pode já ter sido ótima, mas executada lentamente devido aos recursos do sistema serem usados ​​pela instrução lenta real que precisa ser ajustada.