Na comunidade do servidor MySQL 8, os dois comandos a seguir mostram a mesma estrutura:
SHOW PROCESSLIST;
SELECT * FROM information_schema.PROCESSLIST;
Pergunta
- Quando usar o comando
SHOW PROCESSLIST
vsSELECT * FROM information_schema.PROCESSLIST
?
Cada comando existe por um motivo específico, certo?
Sobre suas saídas, encontrei apenas duas diferenças para as colunas State
e Info
para cada comando, respectivamente:
State | Info
----------------------------
init | SHOW PROCESSLIST
executing | SELECT * FROM information_schema.PROCESSLIST
A diferença da Info
coluna é clara porque ela representa o próprio comando que foi executado , mas :
State
Por que a coluna é diferente ?
Está claro o executing
valor, mas:
- O que significa o
init
valor?
SHOW PROCESSLIST
era uma implementação antiga da era das trevas.information_schema.PROCESSLIST
foi adicionado no MySQL 5.1. O manual (que não está online) afirmava:A vantagem de usar
INFORMATION_SCHEMA.PROCESSLIST
era que você podia usarSELECT
uma sintaxe familiar para buscar um subconjunto específico de colunas ou linhas. Mas, internamente, ambas as formas obtinham suas informações da mesma fonte.A
INFORMATION_SCHEMA
tabela está obsoleta desde o MySQL 8.0.22. Recomendamos o usoPERFORMANCE_SCHEMA.PROCESSLIST
daSYS.PROCESSLIST
visualização.O manual afirma:
Você pode definir a
performance_schema_show_processlist=ON
opção e, se o fizer, a fonte de informações do Esquema de Desempenho será usadaSHOW PROCESSLIST
. Gostaria de saber por que isso não está ativado por padrão, já que parece uma boa ideia.