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

SQL:Interruzione di una query

Imho "interrotto" dovrebbe essere sostituito da "ucciso" o "terminato". Il concetto di interruzione può essere fonte di confusione in quanto si potrebbe presumere che consentirebbe di riprendere la query in un secondo momento.

Lo standard SQL non fornisce un modo per interrompere o terminare una query in esecuzione, ma ogni DBMS che conosco implementa un comando KILL o simile. Ad esempio, in MySQL un utente può utilizzare SHOW [FULL] PROCESSLIST per visualizzare tutte le query in esecuzione (e i loro stati, ID query, ecc.). Gli utenti con il privilegio KILL possono quindi terminare una query.

La maggior parte delle KILL si verifica perché una query rischia di essere troppo lunga o blocca altre query, ad es. nella tabella manca un indice o il disco è pieno. Quando non ti interessa il risultato (ad es. l'utente ha annullato la navigazione nel sito), spesso il server web stesso interromperà il processo e quindi la query in sé (non è necessaria alcuna interazione manuale o del programmatore)