Come profilare MySQL
-
06-07-2019 - |
Domanda
Come posso profilare un database MySQL. Voglio vedere tutto l'SQL eseguito su un database.
So che puoi farlo:
-
set profiling = 1;
- Esegui la query lenta (ad es.
SELECT * FROM messaggi WHERE fromaddress = 'xxx';
-
MOSTRA PROFILI;
Ma questo sembra applicarsi solo alle cose eseguite dalla riga di comando, voglio vedere i risultati dalla gestione di un sito web.
Soluzione
Desideri il log delle query - ma ovviamente farlo su un server di produzione pesante potrebbe essere ... poco saggio.
Altri suggerimenti
Ha funzionato per me su Ubuntu.
Trova e apri il tuo file di configurazione MySQL, di solito /etc/mysql/my.cnf
su Ubuntu. Cerca la sezione che dice & # 8220; Registrazione e replica & # 8221;
# * Logging and Replication
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
log = /var/log/mysql/mysql.log
o nelle versioni più recenti di mysql, commenta OUT questa riga di codici
general_log_file = /var/log/mysql/mysql.log
general_log = 1
log_error = /var/log/mysql/error.log
Basta decommentare la variabile log
per attivare la registrazione. Riavvia MySQL con questo comando:
sudo /etc/init.d/mysql restart
Ora siamo pronti per iniziare a monitorare le query non appena arrivano. Apri un nuovo terminale ed esegui questo comando per scorrere il file di registro, modificando il percorso se necessario.
tail -f /var/log/mysql/mysql.log
Puoi semplicemente analizzare il registro delle query in tempo reale. Se su Linux, puoi usare tail -f per vedere il registro dal vivo
Inoltre, puoi provare alcuni software gratuiti di questi ragazzi:
Esiste un prodotto commerciale
MySqlAdministrator ha alcune utili funzioni integrate (inclusa la vista dei registri), ma per i registri deve essere eseguito sullo stesso computer del database