Como visualizo a atividade do servidor de uma instância de banco de dados do Amazon Relational Database Service (Amazon RDS) que está executando o MySQL?
Resolução
Você pode usar a atividade do servidor para ajudar a identificar a origem dos problemas de desempenho. Você pode analisar o estado do mecanismo de armazenamento InnoDB, identificar consultas em execução ou encontrar deadlocks na instância de banco de dados.
É necessário ter o privilégio PROCESS de administração do servidor MySQL para ver todos os threads em execução em uma instância de banco de dados MySQL. Se você não tiver privilégios de administração, o SHOW PROCESSLIST mostrará somente os threads associados à conta do MySQL que você estiver usando. O privilégio PROCESS de administração do servidor MySQL também é necessário para usar SHOW ENGINE. Você também precisa do PROCESS para visualizar informações sobre o estado do InnoDB, o mecanismo de armazenamento.
Para visualizar a atividade do servidor de uma instância de banco de dados, siga estas etapas:
1. Ative os logs de consulta geral e de consulta lenta na instância que estiver executando o mecanismo de banco de dados MySQL.
2. Conecte-se à instância.
3. Execute os comandos a seguir:
SHOW FULL PROCESSLIST\G
SHOW ENGINE INNODB STATUS\G
Observação: use a palavra‑chave FULL se quiser ver mais do que os primeiros 100 caracteres de cada instrução.
4. Verifique quais transações estão aguardando e quais transações estão bloqueando as que estão aguardando. Execute um dos comandos a seguir, dependendo da versão do Amazon RDS para MySQL que você estiver executando:
Para as versões 5.6 e 5.7:
SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query FROM information_schema.innodb_lock_waits w INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;
Para a versão 8.0
ON r.trx_id = w.requesting_engine_transaction_id;INNER JOIN information_schema.innodb_trx r
ON b.trx_id = w.blocking_engine_transaction_id
INNER JOIN information_schema.innodb_trx b
FROM performance_schema.data_lock_waits w
b.trx_query blocking_query
b.trx_mysql_thread_id blocking_thread,
b.trx_id blocking_trx_id,
r.trx_query waiting_query,
r.trx_mysql_thread_id waiting_thread,
r.trx_id waiting_trx_id,
Observação: é recomendável coletar as saídas em intervalos curtos e consecutivos (por exemplo, intervalos de 60 segundos). Analisar várias saídas pode levar a uma visão mais ampla do estado do mecanismo. Isso ajuda você a solucionar problemas de desempenho.
Informações relacionadas
Métricas de monitoramento em uma instância do Amazon RDS