Come devo interpretare il "tempo di blocco" nel registro delle query lente di mysql?


12

Sto cercando di capire come interpretare al meglio il tempo di blocco per le query visualizzate nel registro delle query lente di MySQL.

Ad esempio, se una query UPDATE ha un tempo di blocco di 10 secondi. Presumo che sia il tempo totale dopo che la query di aggiornamento ha acquisito il blocco. Anche se è in attesa che vengano completate le query di selezione precedenti ma non esegua l'azione UPDATE stessa, l'orologio deve essere attivo poiché blocca tutte le query SELECT allineate dopo la query UPDATE.

E che dire dei blocchi di query SELECT. Come mai alcune query selezionate hanno tempi di blocco? È perché c'è una query UPDATE che segue quindi stanno bloccando una tabella insieme.

Risposte:


19

Il lock_timeregistro delle query lente è in realtà la quantità di tempo che la query ha trascorso in attesa di acquisire il blocco necessario per l'esecuzione. Ad esempio, le UPDATESquery richiedono un blocco in scrittura.

Il blocco dipende anche dal motore di archiviazione che si sta utilizzando nella tabella. Durante la scrittura, InnoDB utilizzerà il blocco a livello di riga e bloccherà solo le righe che vengono modificate. MyISAM bloccherà l'intera tabella fino al completamento dell'aggiornamento / inserimento / eliminazione.

Il blocco dell'intera tabella per MyISAM è un grande motivo per cui le SELECTquery avranno un lock_time nel log delle query lente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.