Uma forma de verificar como está seu servidor Mysql neste momento é usando o Mytop. Ele é semelhanto ao top, comando muito conhecido por quem administra um equipamento Linux. Seu uso é bem simples. Basta digitar:
$ mytop -u ricardo -h 172.20.1.62 -p senha
onde:
- -u = usuário
- -h = endereço do servidor
- -p = senha.
Uma tela semelhante a esta é exibida.
MySQL on 172.20.1.62 (5.1.49-3) up 7+06:11:39 [16:16:24]
Queries: 25.0 qps: 0 Slow: 0.0 Se/In/Up/De(%): 117458732/00/00/00
qps now: 1 Slow qps: 0.0 Threads: 8 ( 8/ 4) 6350/00/00/00
Key Efficiency: 100.0% Bps in/out: 0.0/ 0.2 Now in/out: 14.4/ 4.7k
Id User Host/IP DB Time Cmd Query or State
-- ---- ------- -- ---- --- --------------
922650 ricardool fpawks0703 0 Query show full processlist
922703 frontend site adm 1 Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
922704 frontend site adm 1 Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
922708 frontend site adm 1 Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
922713 frontend site adm 1 Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
922716 frontend site adm 1 Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
922731 frontend site adm 1 Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
922732 frontend site adm 1 Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
2 system us 5 Connec Has read all relay log; waiting for the slave I/O thread
1 system us 627099 Connec Waiting for master to send event
Podemos notar que temos 25 queries rodando, sendo a maioria do usuário frontend através da máquina astolfo. Digitando -f conseguimos ver o comando que está sendo executado.
Thread 922784 was executing following query:
SELECT s.id AS s__id, s.channel_id AS s__channel_id, s.program_id AS s__program_id, s.type AS s__type, s.title AS s__title, s.description AS s__description, s.description_short AS s__description_short, s.image AS s__image, s.tv_rating AS s__tv_rating, s.tv_category AS s__tv_category, s.image_source AS s__image_source, s.date_start AS s__date_start, s.date_end AS s__date_end, s.is_active AS s__is_active, s.is_important AS s__is_important, s.is_live AS s__is_live, s.is_geoblocked AS s__is_geoblocked, s.url AS s__url, s.created_at AS s__created_at, s.updated_at AS s__updated_at FROM schedule s WHERE (s.channel_id = '3' AND s.is_important = 1 AND s.date_start >= '2013-01-14 16:16:44') ORDER BY s.date_start LIMIT 1
-- paused. press any key to resume or (e) to explain --
Com isso é possível verificar quais comandos sql estão demorando mais. Isso pode ser muito útil para fazer uma configuração mais fina do bando de dados, melhorando scripts e sequências sql, criação de índices e visões, etc. Também pode ser usado para criar scripts de monitoramento para gerar alerta em ferramentas como Nagios e Zabbix.
O Mytop está disponível nos repositórios das principais distribuições Lionux, e nas derivadas do Debian pode ser instalada através do comando apt-get install mytop.