Como ver a consulta completa no SHOW PROCESSLIST

296

Quando emito a consulta SHOW PROCESSLIST, apenas os 100 primeiros caracteres da consulta SQL em execução são retornados na coluna de informações.

É possível alterar a configuração do Mysql ou emitir um tipo diferente de solicitação para ver a consulta completa (as consultas que estou vendo têm mais de 100 caracteres)

Motoqueiro Fantasma
fonte

Respostas:

482
SHOW FULL PROCESSLIST

Se você não usar FULL, "apenas os 100 primeiros caracteres de cada instrução serão mostrados no Infocampo" .

Ao usar o phpMyAdmin, você também deve clicar na opção "Textos completos" ("← T →" no canto superior esquerdo da tabela de resultados) para ver resultados não truncados.

James McNellis
fonte
3
Parece que o phpmyadmin não se importa com isso e ainda mostra as informações truncadas.
precisa saber é o seguinte
@ giorgio79: Se bem me lembro, o phpMyAdmin trunca todos os resultados de string. Já se passaram quatro anos desde que eu desenvolvi a Web, então eu poderia muito bem estar enganado.
James McNellis
2
Estou vendo consultas ficando truncadas após um certo período, mesmo quando estou usando SHOW FULL PROCESSLIST. Posso torná-lo ainda mais completo de alguma forma?
Wizonesolutions
o comando SHOW FULL PROCESSLISTprecisa de um ponto e vírgula ;no final, certo?
Rakibul Haq
1
@ R.Haq Se for a única consulta que você fará, o ponto-e-vírgula não será necessário. Se você quiser fazer mais de uma consulta, precisará do ponto e vírgula após cada uma delas.
Julio Garcia
85

Mostrar lista de processos busca as informações de outra tabela. Aqui está como você pode extrair os dados e olhar para a coluna 'INFO', que contém toda a consulta:

select * from INFORMATION_SCHEMA.PROCESSLIST where db = 'somedb';

Você pode adicionar qualquer condição ou ignorar com base em seus requisitos.

A saída da consulta é resultado como:

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| ID    | USER | HOST            | DB     | COMMAND | TIME | STATE     | INFO                                                     |
+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
|     5 | ssss | localhost:41060 | somedb | Sleep   |    3 |           | NULL                                                     |
| 58169 | root | localhost       | somedb | Query   |    0 | executing | select * from sometable where tblColumnName = 'someName' |
Yogesh A Sakurikar
fonte
12
Esta é provavelmente a resposta mais útil.
Dr_
Minha coluna de informações é exibida COMMIT. Você sabe como posso ver mais detalhes sobre a consulta real?
precisa saber é o seguinte
localhost: 41060, o que 41060 significa? algum palpite?
Farveen Hassan
12

Acabei de ler a documentação do MySQL que, SHOW FULL PROCESSLISTpor padrão, apenas lista os threads da sua conexão de usuário atual .

Cite a documentação do MySQL SHOW FULL PROCESSLIST:

Se você tiver o privilégio PROCESS, poderá ver todos os threads.

Então você pode habilitar a Process_privcoluna na sua mysql.usertabela. Lembre-se de executar FLUSH PRIVILEGESdepois :)

hardcoder
fonte
12

Veja a consulta completa em SHOW PROCESSLIST:

SHOW FULL PROCESSLIST;

Ou

 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
Hasib Kamal
fonte
10

Se alguém quiser continuar recebendo processos atualizados (por exemplo, 2 segundos) em uma sessão de shell sem precisar interagir manualmente com ela, use:

watch -n 2 'mysql -h 127.0.0.1 -P 3306 -u some_user -psome_pass some_database -e "show full processlist;"'

A única coisa ruim show [full] processlisté que você não pode filtrar o resultado da saída. Por outro lado, emitindo as SELECT * FROM INFORMATION_SCHEMA.PROCESSLISTpossibilidades abertas de remover da saída qualquer coisa que você não queira ver:

SELECT * from INFORMATION_SCHEMA.PROCESSLIST
WHERE DB = 'somedatabase'
AND COMMAND <> 'Sleep'
AND HOST NOT LIKE '10.164.25.133%' \G
cristianoms
fonte