Estados de threads do Aurora MySQL
Os seguintes são alguns estados de thread comuns do Aurora MySQL.
- checking permissions
-
O thread está verificando se o servidor tem os privilégios necessários para executar a instrução.
- checking query cache for query
-
O servidor está verificando se a consulta atual está presente no cache de consulta.
- cleaned up
-
Este é o estado final de uma conexão cujo trabalho está concluído, mas que não foi encerrada pelo cliente. A melhor solução é encerrar a conexão explicitamente no código. Outra alternativa é definir um valor mais baixo para
wait_timeout
no grupo de parâmetros. - closing tables
-
O thread está liberando os dados de tabelas alterados no disco e encerrando as tabelas utilizadas. Se esta não for uma operação rápida, verifique as métricas de consumo de largura de banda de rede em relação à largura de banda de rede da classe de instância. Verifique também se os valores dos parâmetros para
table_open_cache
etable_definition_cache
permitem que tabelas suficientes sejam abertas ao mesmo tempo, para que o mecanismo não precise abrir e fechar tabelas com frequência. Esses parâmetros influenciam o consumo de memória na instância. - converting HEAP to MyISAM
-
A consulta está convertendo uma tabela temporária de "na memória" para "no disco". A conversão é necessária porque as tabelas temporárias criadas pelo MySQL nas etapas intermediárias do processamento de consultas se tornaram grandes demais para a memória. Verifique os valores de
tmp_table_size
emax_heap_table_size
. Em versões posteriores, o nome desse estado de thread éconverting HEAP to ondisk
. - converting HEAP to ondisk
-
O thread está convertendo uma tabela temporária interna de uma tabela "na memória" para uma tabela "no disco".
- copy to tmp table
-
O thread está processando uma instrução
ALTER TABLE
. Esse estado ocorre após a criação da tabela com a nova estrutura, mas antes que as linhas sejam copiadas para ela. Para um thread nesse estado, é possível utilizar o Performance Schema para obter informações sobre o progresso da operação de cópia. - creating sort index
-
O Aurora MySQL está fazendo uma classificação porque não consegue utilizar um índice existente para satisfazer a cláusula
ORDER BY
ouGROUP BY
de uma consulta. Para obter mais informações, consulte criar índice de classificação. - creating table
-
O thread está criando uma tabela permanente ou temporária.
- delayed commit ok done
-
Uma confirmação assíncrona no Aurora MySQL recebeu um reconhecimento e está concluída.
- delayed commit ok initiated
-
O thread do Aurora MySQL iniciou o processo de confirmação assíncrona, mas está aguardando reconhecimento. Em geral, esse é o tempo de confirmação autêntico de uma transação.
- delayed send ok done
-
Um thread de operador do Aurora MySQL que está vinculado a uma conexão pode ser liberado enquanto uma resposta é enviada ao cliente. O thread pode iniciar outro trabalho. O estado
delayed send ok
indica que o reconhecimento assíncrono para o cliente foi concluído. - delayed send ok initiated
-
Um thread de operador do Aurora MySQL enviou uma resposta assíncrona a um cliente e está livre para trabalhar com outras conexões. A transação iniciou um processo de confirmação assíncrona que ainda não foi reconhecido.
- executing
-
O thread iniciou a execução de uma instrução.
- freeing items
-
O thread executou um comando. Algumas liberações de itens realizadas nesse estado envolvem o cache de consulta. Em geral, esse estado é seguido por uma limpeza.
- init
-
Esse estado ocorre antes da inicialização de instruções
ALTER TABLE
,DELETE
,INSERT
,SELECT
ouUPDATE
. As ações nesse estado incluem liberar o log binário ou o log do InnoDB e a limpeza do cache de consulta. - A origem enviou todos os logs binários à réplica; aguardando mais atualizações.
-
O nó primário terminou sua parte da replicação. O thread está aguardando mais consultas serem executadas para poder gravar no log binário (binlog).
- opening tables
-
O thread está tentando abrir uma tabela. Essa operação é rápida, a menos que uma instrução
ALTER TABLE
ouLOCK TABLE
precise ser encerrada ou exceda o valor detable_open_cache
. - optimizing
-
O servidor está fazendo otimizações iniciais para uma consulta.
- preparing
-
Esse estado ocorre durante a otimização de consultas.
- query end
-
Esse estado ocorre após o processamento de uma consulta, mas antes do estado de liberação de itens.
- removing duplicates
-
O Aurora MySQL não conseguiu otimizar uma operação
DISTINCT
no estágio inicial de uma consulta. O Aurora MySQL precisa remover todas as linhas duplicadas antes de enviar o resultado ao cliente. - searching rows for update
-
O thread está localizando todas as linhas correspondentes antes de as atualizar. Este estágio será necessário se o
UPDATE
estiver alterando o índice usado pelo mecanismo para localizar as linhas. - sending binlog event to slave
-
O thread fez a leitura de um evento do log binário e o está enviando para a réplica.
- sending cached result to client
-
O servidor está obtendo o resultado de uma consulta do cache de consultas e o enviando ao cliente.
- sending data
-
O thread está fazendo a leitura e o processamento de linhas para uma instrução
SELECT
, mas ainda não começou a enviar dados ao cliente. O processo está identificando quais páginas contêm os resultados necessários para atender à consulta. Para obter mais informações, consulte enviar dados. - sending to client
-
O servidor está gravando um pacote para o cliente. Em versões anteriores do MySQL, esse evento de espera se chamava
writing to net
. - starting
-
Este é o primeiro estágio no início da execução da instrução.
- estatísticas
-
O servidor está calculando estatísticas para desenvolver um plano de execução de consultas. Se um thread estiver nesse estado por um longo tempo, o servidor provavelmente está associado ao disco durante a realização de outros trabalhos.
- storing result in query cache
-
O servidor está armazenando o resultado de uma consulta no cache de consultas.
- system lock
-
O thread chamou
mysql_lock_tables
, mas o estado desse thread não foi atualizado desde a chamada. Esse estado geral ocorre por diversos motivos. - atualizar
-
O thread está se preparando para iniciar a atualização da tabela.
- atualizar
-
O thread está procurando linhas e as está atualizando.
- user lock
-
O thread emitiu uma chamada
GET_LOCK
. O thread solicitou um bloqueio consultivo e está aguardando por ele ou está planejando solicitá-lo. - waiting for more updates
-
O nó primário terminou sua parte da replicação. O thread está aguardando mais consultas serem executadas para poder gravar no log binário (binlog).
- waiting for schema metadata lock
-
Uma espera por um bloqueio de metadados.
- waiting for stored function metadata lock
-
Uma espera por um bloqueio de metadados.
- waiting for stored procedure metadata lock
-
Uma espera por um bloqueio de metadados.
- waiting for table flush
-
O thread está executando
FLUSH TABLES
e aguardando todos os threads fecharem suas tabelas. Ou, o thread recebeu uma notificação de que a estrutura subjacente de uma tabela foi modificada e, portanto, precisa reabrir essa tabela para obter a nova estrutura. Para reabrir a tabela, o thread deve aguardar até que todos os outros threads s tenham fechado. Essa notificação ocorre quando outro thread utilizou uma das seguintes instruções na tabela:FLUSH TABLES
,ALTER TABLE
,RENAME TABLE
,REPAIR TABLE
,ANALYZE TABLE
ouOPTIMIZE TABLE
. - waiting for table level lock
-
Uma sessão está mantendo um bloqueio em uma tabela enquanto outra sessão tenta obter esse mesmo bloqueio na mesma tabela.
- waiting for table metadata lock
-
O Aurora MySQL utiliza o bloqueio de metadados para gerenciar o acesso simultâneo a objetos de banco de dados e garantir a consistência dos dados. Nesse evento de espera, uma sessão está mantendo um bloqueio de metadados em uma tabela enquanto outra sessão tenta obter esse mesmo bloqueio na mesma tabela. Quando o Performance Schema está habilitado, esse estado de thread é indicado como o evento de espera
synch/cond/sql/MDL_context::COND_wait_status
. - writing to net
-
O servidor está gravando um pacote na rede. Em versões posteriores do MySQL, esse evento de espera se chama
Sending to client
.