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

inno db livelli di isolamento e blocco

InnoDB imposta tipi specifici di lock come segue.

  • SELECT ... FROM è una lettura coerente, che legge uno snapshot del database e non imposta alcun blocco a meno che il livello di isolamento della transazione non sia impostato su SERIALIZABLE. Per il livello SERIALIZABLE, la ricerca imposta i blocchi del tasto successivo condivisi sui record dell'indice che incontra.

  • SELEZIONA ... DA ... BLOCCO IN MODALITÀ CONDIVISIONE imposta i blocchi dei tasti successivi condivisi su tutti i record di indici incontrati dalla ricerca.

  • Per i record dell'indice incontrati dalla ricerca, SELECT ... FROM ... FOR UPDATE impedisce ad altre sessioni di eseguire SELECT ... FROM ... LOCK IN SHARE MODE o di leggere determinati livelli di isolamento delle transazioni. Le letture coerenti ignoreranno tutti i blocchi impostati sui record esistenti nella vista di lettura.

  • AGGIORNAMENTO ... DOVE ... imposta un blocco esclusivo del tasto successivo su ogni record incontrato dalla ricerca.

  • ELIMINA DA ... DOVE ... imposta un blocco esclusivo del tasto successivo su ogni record incontrato dalla ricerca.

  • INSERT imposta un blocco esclusivo sulla riga inserita. Questo blocco è un blocco del record di indice, non un blocco della chiave successiva (ovvero non è presente alcun blocco del gap) e non impedisce l'inserimento di altre sessioni nello spazio prima della riga inserita.

InnoDB ha diversi tipi di blocchi a livello di record:

  • Blocco record:questo è un blocco su un record di indice.

  • Blocco spazio:questo è un blocco su uno spazio vuoto tra i record dell'indice o un blocco sullo spazio prima del primo o dopo l'ultimo record dell'indice.

  • Blocco del tasto successivo:questa è una combinazione di un blocco del record sul record dell'indice e un blocco del gap sullo spazio prima del record dell'indice.

Vedi di più :

Evitare il problema fantasma utilizzando il blocco del tasto successivo

Evitare lo stallo