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

Perché due istruzioni simultanee di eliminazione + inserimento si bloccano su una tabella vuota?

Il "gap" è bloccato in attesa che qualcuno possa provare a inserire la riga che sto cercando di eliminare.

O, per vederla in un altro modo... Sarebbe troppo lento per gestire perfettamente ogni caso strano. Quindi, InnoDB sceglie di gestire la maggior parte dei casi in modo efficiente e punta sul raro caso stravagante.

In conclusione:vivi con esso. Tu farai ottenere deadlock. Non sarai necessariamente in grado di capirli. Ma il tuo codice deve essere ripristinato, semplicemente tornando indietro e tornando a BEGIN .