Come posso visualizzare l'attività del server per un'istanza database di Amazon Relational Database Service (Amazon RDS) che esegue MySQL?
Soluzione
È possibile utilizzare l'attività del server per identificare l'origine dei problemi di prestazioni. È possibile esaminare lo stato del motore di archiviazione InnoDB, identificare le query in esecuzione o trovare i deadlock sull'istanza database.
Devi disporre dei privilegi di amministrazione PROCESS del server MySQL per visualizzare tutti i thread in esecuzione su un'istanza database MySQL. Se non disponi dei privilegi di amministratore, il comando SHOW PROCESSLIST mostra solo i thread associati all'account MySQL che stai utilizzando. Inoltre devi disporre dei privilegi di amministratore MySQL PROCESS per utilizzare il comando SHOW ENGINE. I privilegi di amministratore MYSQL PROCESS sono necessari anche per visualizzare le informazioni sullo stato del motore di archiviazione InnoDB.
Per visualizzare l'attività del server per un'istanza database, segui questi passaggi:
1. Attiva il log delle query generale e il log delle query lente per l’istanza database MySQL.
2. Connettiti all'istanza database su cui è in esecuzione il motore di database MySQL.
3. Esegui questi comandi:
SHOW FULL PROCESSLIST\G
SHOW ENGINE INNODB STATUS\G
Nota: Per visualizzare più dei primi 100 caratteri di ogni istruzione, usa la parola chiave FULL.
4. Controlla quali transazioni sono in attesa e quali transazioni stanno bloccando le transazioni in attesa. Esegui uno di questi comandi a seconda della versione di Amazon RDS per MySQL in esecuzione:
Per le versioni 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;
Per la versione 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,
Nota: È consigliabile raccogliere questi output a intervalli brevi e consecutivi (ad esempio 60 secondi). L’esame di più output può offrire una visione più ampia dello stato del motore. Questo consente di risolvere i problemi relativi alle prestazioni.
Informazioni correlate
Monitoraggio di parametri in un'istanza Amazon RDS