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.

È stato utile?

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:

http://hackmysql.com/mysqlsla

Esiste un prodotto commerciale

http://www.webyog.com/en/

MySqlAdministrator ha alcune utili funzioni integrate (inclusa la vista dei registri), ma per i registri deve essere eseguito sullo stesso computer del database

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top