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

MySQL INSERT e SELECT Ordine di precedenza

Dipende se i tuoi users la tabella è MyISAM o InnoDB.

Se è MyISAM, una dichiarazione o l'altra bloccano il tavolo e c'è poco che puoi fare per controllarlo, a parte tabelle di blocco te stesso.

Se è InnoDB, è basato sulla transazione. L'architettura multi-versioning consente l'accesso simultaneo alla tabella e al SELECT vedrà il conteggio delle righe nell'istante in cui è iniziata la transazione. Se è presente un INSERT proseguendo contemporaneamente, il SELECT vedrà 0 righe. In effetti potresti persino vedere 0 righe con un SELECT eseguito alcuni secondi dopo, se la transazione per il INSERT non si è ancora impegnato.

Non è possibile che le due transazioni inizino davvero contemporaneamente. È garantito che le transazioni abbiano un certo ordine.