Mysql
 sql >> Database >  >> RDS >> Mysql

Abilita la registrazione di query lente (registro query lente) nel database MySQL

Uno dei requisiti principali per un server web veloce è avere istruzioni o query SQL efficienti ed efficaci che siano ottimizzate. Qualsiasi comando o istruzione SQL (Structured Query Language) non ottimale che richiede troppo tempo o molto tempo per l'esecuzione consumerà molte risorse di sistema, causando un rallentamento del database MySQL e quindi un numero sempre maggiore di backlog di query in coda e quando è stato raggiunto il limite di connessione, ai visitatori è stata negata o rifiutata la connessione. Nella peggiore delle ipotesi, anche il tuo server web si guasterà o avrà prestazioni costantemente inferiori. Il caso è particolarmente vero quando si utilizza il tipo di tabella MyISAM che utilizza il blocco a livello di tabella anziché il blocco a livello di riga in un sito Web ad alto traffico.

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.