SHOW [FULL] PROCESSLIST
exibe quais threads
estão em execução. Esta informação também pode ser
obtida com o comando mysqladmin
processlist
. Se você possuir o privilégio
SUPER
, poderá ver todas as threads. Senão
só é possível ver as próprias threads. See
Secção 4.6.7, “Sintaxe de KILL
”. Se você não utiliza a opção
FULL
, então somente os primeiros 100
caracteres de cada query serião exibidos.
A partir da versão 4.0.12, o MySQL informa o nome de maquina
para conexões TCP/IP no formato
nome_maquina:client_port
para tornar mais
fácil de se encontrar qual cliente está fazendo o que.
Este comando é muito útil caso você obtenha a mensagem de
erro 'too many connections' e deseja saber o que está
ocorrendo. O MySQL reserva uma conexão extra por cliente com
o privilégio SUPER
para garantir que você
sempre consiga logar e conferir o sistema (assumindo que este
privilégio não foi concedido para todos os usuários).
Alguns estados normalmente vistos em mysqladmin
processlist
Checking table
A thread está
realizando verificação [automática] da tabela.
Closing tables
Signiifica que a thread
está descarregando os dados alterados na tabela para o
disco e fechando as tabelas usadas. Isto deve ser uma
operação rápida. Se não, você deve verificar se o seu
disco não está cheio ou que o disco não está com
sobrecarga.
Connect Out
Slave está conectando ao
master.
Copying to tmp table on disk
O
resultado temporário foi maior que
tmp_table_size
e a thread agora está
alterando a tabela temporária na memória para o disco
para economizar memória.
Creating tmp table
A thread está
criando uma tabela temporária para guardar uma parte do
resultado para a consulta.
deleting from main table
Ao executar a
primeira parte de um delete multi-tabela e estamos
deletando apenas da primeira tabela.
deleting from reference tables
Ao
executar a segunda parte de um delete multi-tabela e
estamos deletando o registros correspondentes em outras
tabelas.
Flushing tables
A thread está
executando FLUSH TABLES
e está
esperando que todas as threads fechem as suas tabelas.
Killed
Alguém enviou um sinal para
matar a thread e ela deve abortar a próxima vez que ele
verificar o parâmetro kill. O parâmetro é verificado em
cada loop maior no MySQL, mas em alguns casos ainda pode
levar um tempo curto para a thread morrer. Se a thread
está bloqueada par outra thread, a finalização terá
efeito assim que as outras threads liberarem o bloqueio.
Sending data
A thread está processando
registros para uma instrução SELECT
e
também está enviando dados ao cliente.
Sorting for group
A thread está
fazendo uma ordenação para satisfazer a um
GROUP BY
.
Sorting for order
A thread está
fazendo uma ordenação para satisfazer a um
ORDER BY
.
Opening tables
Isto simplesmente
significa que a thread está tentando abrir uma tabela.
Este deve ser um procedimento muito rápido, a menos que
algo previna da abertura. Por exemplo um ALTER
TABLE
ou um LOCK TABLE
pode
prvenir a abertura de uma tabela até que o comando esteja
finalizado.
Removing duplicates
A consulta estava
usando SELECT DISTINCT
de tal modo que
o MySQL não podia otimizar o distinct em um estagio
anterior. Por isto o MySQL fez um estágio extra para
remover todos os registros duplicados antes de enviar o
resultado ao cliente.
Reopen table
A thread obteve um lock
para a tabela, mas notificou após o lock que a estrutura
da tabela alterou. Ela liberou o lock, fechou a tabela e
agora está tentando reabrí-la.
Repair by sorting
O código de
reparação está utilizando ordenamento para recriar os
índices.
Repair with keycache
O código de
reparação está usando a criação de chaves uma a uma
através da cache de chaves. Isto é muito mais lento que
Repair by sorting
.
Searching rows for update
A thread esta
fazendo uma primeira fase pra encontrar todos os registros
coincidentes antes de atualizá-los. Isto deve ser feito
se o UPDATE
está alterando o índice
usado para encontrar os registros envolvidos.
Sleeping
A thread está esperando que o
cliente envie um novo comando a ela.
System lock
A thread está esperando um
lock de sistema externo para a tabela. Se você não está
usando múltiplos servidores mysqld que estão acessando a
mesma tabela, você pode desabilitar o lock de sistema com
a opção --skip-external-locking
.
Upgrading lock
O manipulador de
INSERT DELAYED
está tentando obter um
lock para inserir registros na tabela.
Updating
A thread está procurando por
registros para atualizá-los.
User Lock
A thread está esperando um
GET_LOCK()
.
Waiting for tables
A thread recebeu uma
notificação que a estrutura de uma tabela foi alterada e
ela precisa reabrir a tabela para receber a nova
estrutura. Para poder reabrir a tabela ela deve esperar
até que todas a outras threads tenham fechado a tabela em
questão.
A notificação acontece se outra thread usou
FLUSH TABLES
ou um dos seguintes
comando na tabela em questão: FLUSH TABLES
nome_tabela
, ALTER TABLE
,
RENAME TABLE
, REPAIR
TABLE
, ANALYZE TABLE
ou
OPTIMIZE TABLE
.
waiting for handler insert
O
manipulador do INSERT DELAYED
processou
todas as inserções e está esperado por outras.
A maioria dos estados são operações muito rápidas. Se a thread permanecer em qualquer destes estados por muitos segundos, pode haver um problema que precisa ser investigado.
Existem outros estados que não são mencionados
anteriormente, mas a maioia deles só são úteis para
encontrar erros no mysqld
.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.