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

Perché il commit non causa deadlock

Sospetto che questo sia un caso limite che non vale la pena rendere più efficiente. Nota che dovevi fare 3 sessioni cercando di afferrare la stessa riga - un evento raro. E hai fatto un ROLLBACK -- anche raro. Quindi lo stallo che si è verificato è eccessivo, ma non vale la pena risolverlo. Per questo motivo, bisogna essere preparati a gestire i deadlock ovunque.

Cordiali saluti, se si trattasse di 3 nodi di un cluster Galera, ci sarebbero errori su COMMIT che il codice dovrebbe gestire. Sospetto che succedano ancora più combinazioni di cose strane se applichi questa transazione (con rollback o commit) più volte a più nodi.

Ora alla tua domanda... Presumibilmente il deadlock non si è verificato perché uno dei thread ha ottenuto il blocco esclusivo e l'altro è stato colpito con un "wait" invece di un "deadlock".