O que significa se a consulta Mysql:
SHOW PROCESSLIST;
retorna "Enviando dados" na coluna Estado?
Eu imagino que isso significa que a consulta foi executada e o MySQL está enviando dados de "resultado" para o cliente, mas estou me perguntando por que está demorando tanto tempo (até uma hora).
Obrigado.
Sending data
uma etapa que demora algum tempo após a execuçãoSHOW PROFILE
, o tempo consumido realmente pertence à etapa anterior.Sending data
mostra o tempo gasto é porque é um bug no perfil do MySQL, o tempo mostrado lá pertence à etapa anterior, que deve serExecuting query
ou algo semelhante. Significa apenas que sua consulta demora para ser executada.Sending data
Essa etapa geralmente é rápida, a menos que você transmita centenas de megabytes de dados.Respostas:
Este é um status bastante enganador. Deve ser chamado de "leitura e filtragem de dados".
Isso significa que
MySQL
existem alguns dados armazenados no disco (ou na memória) que ainda precisam ser lidos e enviados. Pode ser a própria tabela, um índice, uma tabela temporária, uma saída classificada etc.Se você tiver uma tabela de registros de 1 milhão (sem um índice) da qual você precisa apenas de um registro,
MySQL
ainda emitirá o status como "enviando dados" durante a varredura da tabela, apesar de ainda não ter enviado nada.fonte
Neste estado:
É por isso que leva mais tempo para concluir e também é o estado de execução mais longa ao longo da vida útil de uma determinada consulta.
fonte