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

myisam posiziona il blocco della tabella sul tavolo anche quando si tratta di una query "seleziona"?

MyISAM ha diversi tipi di serrature. Un SELECT l'operazione pone un BLOCCO LETTURA sul tavolo. Possono esserci più blocchi di lettura attivi in ​​qualsiasi momento, purché non ci siano BLOCCHI DI SCRITTURA attivi . Operazioni che modificano la tabella, ad es. INSERT , UPDATE , DELETE o ALTER TABLE inserisci un BLOCCO SCRITTURA sul tavolo. Il blocco di scrittura può essere posizionato su una tabella solo quando non ci sono blocchi di lettura attivi; Se sono presenti blocchi di lettura attivi, MyISAM mette in coda il blocco di scrittura da attivare non appena tutti i blocchi di lettura attivi sono scaduti.

Allo stesso modo, quando è presente un blocco di scrittura attivo, il tentativo di inserire un blocco di lettura su una tabella metterà in coda il blocco (e la query associata) fino alla scadenza dei blocchi di scrittura sulla tabella.

Alla fine tutto questo significa che:

  • Puoi avere un numero qualsiasi di blocchi di lettura attivi (chiamati anche blocchi condivisi)
  • Puoi avere un solo blocco di scrittura attivo (chiamato anche blocco esclusivo)

Per ulteriori informazioni, vedere:http://dev.mysql. com/doc/refman/5.5/en/internal-locking.html