A volte, una singola query SQL può essere la causa di tutti i problemi del server. MySQL ha funzionalità integrate per acquisire il registro delle query lente o identificare le query che non sono ottimali e richiedono molto tempo per essere completate, il che consente di registrare tutte le query a esecuzione lenta che hanno richiesto un numero definito di secondi per essere eseguite dal motore di database MySQL su un file. Il registro delle query lente non è attivato o è attivo per impostazione predefinita nell'installazione di MySQL, quindi è uno dei registri meno utilizzati.
Per abilitare il log delle query lente, aggiungi semplicemente la seguente riga al file di configurazione di MySQL (my.cnf o my.ini), quindi riavvia il server MySQL:
log-slow-queries
Oppure,
log-slow-queries = [path to the log file]
Sostituisci [percorso del file di registro] con il percorso effettivo del file di registro della query lenta in cui desideri che MySQL scriva il registro, che è il valore opzionale.
Oppure puoi avviare mysqld con –log-slow-queries[=file_name] opzione per abilitare il registro delle query lente. In entrambe le sintassi, se non viene specificato alcun nome file di registro, il nome predefinito è nome_host -slow.log, memorizzato nella directory del file di dati MySQL. Se viene fornito un nome file, ma non come percorso assoluto, il server scrive il file anche nella directory dei dati.
Dopo aver abilitato il registro delle query lente, MySQL creerà, acquisirà e registrerà nel file di registro tutte le istruzioni SQL che hanno richiesto più di tempo_query_lungo secondi per l'esecuzione, che per impostazione predefinita è 10 secondi . Il tempo per acquisire i blocchi di tabella iniziali non viene conteggiato come tempo di esecuzione. mysqld scrive un'istruzione nel log della query lenta dopo che è stato eseguito e dopo che tutti i blocchi sono stati rilasciati, quindi l'ordine del log potrebbe essere diverso dall'ordine di esecuzione.
È quindi possibile esaminare tutte le query SQL lente nel file di registro e quindi eseguire i passaggi necessari per ottimizzare le istruzioni SQL. Il registro della query lenta ti indicherà l'ora in cui è stata completata la query, il tempo impiegato per l'esecuzione della query, il tempo impiegato per proteggere i suoi blocchi, quante righe sono state inviate di conseguenza, quante righe sono state esaminate per determinare il risultato, quale database è stato utilizzato e la query stessa. Ma tieni presente che una query SQL contenuta nel registro potrebbe essere già ottimale, ma eseguita lentamente a causa delle risorse di sistema esaurite dall'istruzione lenta effettiva che deve essere ottimizzata.