Mostra o processo atual no console MySQL

Já se perguntou por que seu servidor MySQL está usando 100% dos recursos da CPU?

A instrução show processlist do MySQL permite que você saiba qual consulta está sendo executada no momento em seu servidor.

Neste exemplo, eu uso um banco de dados de demonstração do Launchpad: https://launchpad.net/test-db (ótimo banco de dados para suas demos btw). Preparei uma consulta intencionalmente excessivamente complicada que está aqui apenas para levar algum tempo para ser executada (não se concentre no significado desta consulta).

Aqui está a consulta:

SELECT * FROM employees
INNER JOIN dept_emp ON employees
.emp_no = dept_emp.emp_no
INNER JOIN departments ON departments
.dept_no = dept_emp.dept_no
INNER JOIN dept_manager ON dept_manager
.dept_no = departments.dept_no
WHERE employees
.emp_no IN (
SELECT employees
.emp_no
FROM employees

INNER JOIN dept_emp ON employees
.emp_no = dept_emp.emp_no
INNER JOIN departments ON departments
.dept_no = dept_emp.dept_no
INNER JOIN dept_manager ON dept_manager
.dept_no = departments.dept_no
WHERE dept_manager
.from_date > '1990-01-01' AND dept_manager.to_date < '1991-01-01'
);

Execute esta consulta em (leva 16 segundos para ser executada no meu laptop) e verifique qual consulta é tratada atualmente pelo seu servidor:

$ mysql -u username -ppwd
$ mysql
> show full processlistG;

Isso deve fornecer a você algo parecido com isto (não se esqueça da opção completa , se desejar que a consulta completa seja exibida):

*************************** 1. row ***************************
Id: 67
User: username
Host: localhost:59331
db
: NULL
Command: Query
Time: 0
State: NULL
Info: show full processlist
*************************** 2. row ***************************
Id: 74
User: username
Host: localhost:59480
db
: employees
Command: Query
Time: 15
State: Sending data
Info: SELECT * FROM employees
INNER JOIN
... here goes the rest of the echoed query
2 rows in set (0.00 sec)

ERROR
:
No query specified

Este comando sempre mostra um resultado para a consulta show processlist em si, portanto, não se preocupe com o primeiro resultado.
O segundo nos informa que, quando verificamos a lista de processos, o servidor estava enviando os dados por 15 segundos (de 16 segundos).

Nesse caso, provavelmente devo adicionar uma cláusula where para reduzir o tamanho do resultado.